問題タブ [netmsmqbinding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wcf - MSMQ は破損しますか?
私は、自社開発のクラウド ソリューションを持つ会社から始めたばかりです。彼らは、SQL Server を中心に中央キューイング メカニズムを構築しました。テクニカル ディレクタと話すと、過去に MSMQ を試したことがありましたが、大量のキューが破損するという問題に遭遇したとのことです。インターネットで検索を行っていますが、この問題について何も見つかりません。
誰もそのようなことを聞いたことがありますか?これに関する良い記事はありますか?
また、この目的で WCF を使用していません。WCF のトランザクションの性質は、これらの破損の問題を解決しますか?
c# - WCF サービスの TransactionTimeout を動的に設定するにはどうすればよいですか?
MSMQ で実行されている WCF サービスのトランザクション タイムアウトを動的に設定できるようにする必要があります。MSDN の例に従っています: http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.channeldispatcher.transactiontimeout.aspx。ただし、設定しているタイムアウトは機能していないようです。
TransactionTimeoutプロパティを設定するために使用しているコードは次のとおりです。
サービスを実行し、サービスの実装に 2 分間の遅延を設定すると、別の MSMQ キューに書き込もうとすると、トランザクション登録エラーが発生します。
例外: キューへの送信中にエラーが発生しました: 指定されたトランザクションを登録できません。(-1072824232、0xc00e0058)。MSMQ がインストールされ、実行されていることを確認します。ローカル キューに送信する場合は、必要なアクセス モードと承認を備えたキューが存在することを確認してください。
過去にこれを機能させることができた人はいますか?どんなアイデアでも大歓迎です。
前もって感謝します。
wcf - MsmqIntegrationBinding または netMsmqBinding を使用する必要がありますか?
私の会社はサードパーティのアプリケーションを購入しました。ドキュメントもサポートもありません。このアプリケーションは .net を使用しており、キューを作成します。
メッセージがキューに到着したらすぐに受け取るアプリケーションを作成する必要があります。
どのバインディングを使用する必要がありますか? この 2 つのバインディングの違いを読みました。どちらを使うかまだ迷っています。
wcf - Fitnesse で OneWay WCF 操作をテストする方法
現在のアプリケーションでは、操作コントラクトを一方向としてマークする必要がある WCF netMSMQBinding を使用しようとしています。
また、Fitnesse をテスト エンジンとして使用しようとしています。このテスト ケースでは、シナリオをエンド ツー エンドでテストする必要があります。これは、メッセージが配置されるとすぐに返されるため、一方向操作を使用できないことを意味します。 queue とfitnesse は結果をアサートしようとしますが、実際のメッセージではまだ処理されている場合とされていない場合があります。したがって、一方向の操作を使用する場合は、実行が完了するまで何らかの方法で待機する必要があります。
試したアプローチ/研究中..
構成を読み取ることにより、ホスティング時に OperationDescription を変更します。これにより、Fitnesse IsOneWay が False でホストされているが、実稼働環境では IsOneWay が True であり、その後、実稼働環境でのみユーザー MSMQ バインディングをテストし、tcp または netnamedpipe を使用するようになります。
カスタム ServiceHost を作成し、Service を開く前に OperationDescription を変更しようとしましたが、OperationDescription クラスの IsOneWay は読み取り専用プロパティであり、.Net Framework コードを見ると、メッセージの数が返されます。私の意見では、サービス ホストの CreateDescription 操作をオーバーライドし、カスタム実装を提供する必要があります。そうみたいです
メッセージが処理されるまで何らかの方法で待機するモニター フィクスチャを Fitnesse に作成します。
アプローチ 1: MessageId と完了ステータスを格納するカスタム db テーブルを作成し、各メッセージ処理の最後にそのテーブルにレコードを入力します。これで、fitnesse フィクスチャはテーブルをポーリングし、実行が完了するまで待機することができます。
アプローチ 2: 何らかの方法で MSMQ をポーリングし、メッセージがいつ処理されるかを把握します。どうすればうまくいくか、まだまだ研究中です。
現在のアプローチまたは新しいアプローチの指針を提案してください。
wcf - WCF サービス (ServiceHost) の終了は見た目ほど優雅ではありません
を呼び出すとserviceHost.Close()
、タイムアウト値serviceHost.Close(TimeSpan.FromMinutes(10))
を設定しても、メッセージの受信が停止している間、1 つまたは 2 つのメッセージが時々失われるようです。
操作の途中でサービスを停止したいが、受信済みの残りのメッセージを処理したい。メッセージがまだ処理されている間にサービスを適切に閉じる方法はありますか?
私はすでに app.config のcloseTimeout
andreceiveTimeout
を 10 分に設定していますが、これも使用していますRequestAdditionalTime(600000)
が、それでもこの問題が発生します。10分で閉まらず、最大1分で閉まります。
私が使用しているバインディングはnetMsmqBindingです。
編集:
プロセスが終了していない場合はループし続けるServiceBase
メソッドに while ステートメントを追加して、問題を一時的に修正しました。OnStop
汚いハックのように思えますが、今のところ機能します。綺麗に終わらせる良い方法があれば教えてください。
workflow - 「netMsmqBinding」失われたメッセージ
Windows サービスでホストされ、netMsmqBinding で動作する WF4 があります。サービスが開始されると、すべてが正常に機能します。サービスはプライベート キューを読み取り、メッセージ oky を処理します。
問題は、Windows サービスが停止しているときです。クライアントを実行し、メッセージをキューに入れます。しかし、Windowsサービスを開始すると、メッセージはキューから消えますが、処理を開始することはありません。サービスが開始された状態でキューに他のメッセージを送信すると、正常に処理されますが、サービスが停止したときにキューに入ったメッセージはすべて失われます。
http - 「既定の Web サイト」ではなく、HTTP 経由で MSMQ を動作させる方法
タイトルにあるのは本当に……。
DEFAULT Web サイトで MSMQ が HTTP 経由でメッセージを受信しています。IPアドレスが割り当てられているだけです。
特定の URL を使用してメッセージをキューにプッシュできるようにする必要があります (本番環境ではプロキシなどによってブロックされません)。
問題は、MSMQ が「既定の Web サイト」にしかインストールされないことです。そして、私の弱い試みは失敗しました。
- net.msmq および msmsq.formatname へのバインドを「既定以外の Web サイト」に追加しました。「既定の Web サイト」で機能するため、「バインディング情報」を「localhost」として使用しました。
- デフォルト以外の Web サイトで Web アプリケーションを作成しました。同じフォルダー (inetpub\wwwrot\msmq) を指します。[これが機能していないところだと思いますが、それはどのように「魔法のように」機能するのでしょうか??
- 「デフォルト以外」の Web サイトで MSMQ と呼ばれる「Web アプリケーション」に net.msmq および msmsq.formatname プロトコルを追加しました。
上記の手順は基本的に同じです。ここにあるさまざまなスクリプトを実行して、私もこれを行いました: http://channel9.msdn.com/shows/Endpoint/endpointtv-Screencast-Configuring-WAS-for-TCP- Endpoints/およびhttp://geekswithblogs.net/sathya/archive/2011/08/17/the-protocol-net.msmq-is-not-supported.aspx
喜びのないすべて。
特定のドメインを使用して msmq http メッセージを受信する必要があるだけです。
PS、本番環境では、ドメインにも SSL 証明書があります。(win サーバー 2008 r2 上)