質問

WCFロードバランサー/ルーターを構築して、すべてのMSMQバインディングを使用して、片方向サービスを複数のエンドポイントに条件付きでルーティングしました。また、ルーターからのすべてのエンドポイントを使用してサービスコールを受け入れるホストを作成しました。すべてのエンドポイントは同じ契約を指定します。

各キュー(エンドポイント)を同時に処理する必要がありますが、各サービス呼び出しは順次処理する必要があります。

InstanceContextMode = InstanceContextMode.SingleおよびConcurrencyMode = ConcurrencyMode.Singleを使用しようとしましたが、これはすべてのエンドポイントを処理する単一のインスタンスのみを提供します。 InstanceContextMode = PerCallは、必要な順序を保証しません。
必要なのは、同時に実行されるエンドポイントごとに単一のサービスインスタンスです。

のServiceBehaviorを使用してさまざまな置換を試みました

ReleaseServiceInstanceOnTransactionComplete = true/false.

MSMQバインディングを使用してWCFでこれをどのように実現しますか?

役に立ちましたか?

解決

少し明確になるように構成を配置します。独自の同期コンテキストを定義することにより、WCFが呼び出しを実行する方法を制御することもできます。私は別のプロジェクトのためにそれをしなければならなかったので、この記事にコードを投稿しました

http://www.codeproject.com/KB/threads/SynchronizationContext3.aspx

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top