0

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

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

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

また、 ServiceBehavior を使用してさまざまな順列を試しました

ReleaseServiceInstanceOnTransactionComplete = true/false.

MSMQ バインディングを使用して WCF でこれを達成するにはどうすればよいですか?

4

1 に答える 1

1

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

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

于 2009-03-27T09:38:53.947 に答える