0

WCF とマルチスレッドについていくつか質問があります。私の計画は、アイテムをスレッド プールに配置し、MSMQ キューからのメッセージを処理することです。また、WAS で WCF をホストする予定です。

この時点で、スレッドがどのように機能するのか疑問に思っています。たとえば、メッセージは MSMQ キューにバインドされている WCF によって取得され、必要に応じて WAS がサービスをスピンアップすることがわかっています。しかし、処理するメッセージが 100 件ある場合 (たとえば、1 秒あたり 100 件のメッセージ)、これらはスレッド化された方法で配信されますか、それとも単一のスレッドで配信されますか?

スレッド方式の場合、トランザクションをコミットまたは中止する最善の方法は? 特別な考慮事項はありますか?

質問して申し訳ありません-これを明確にする必要があります。

4

1 に答える 1

1

「アイテムをスレッド プールに配置する」ことが何をするのかは明確ではありませんが、WCF 側では、netMsmqBinding他の WCF バインディングと同様の方法で「呼び出し」を処理するサービスを使用します。違いは、「呼び出し」が実際にはキュー内の MSMQ メッセージであることです。

netMsmqBinding に関するこの記事では、バインディングのしくみについて非常に明確に説明しています。既定の InstanceContext 設定 (.NET バージョンに応じて呼び出しごとまたはセッションごと) で WCF サービスを構成すると、サービス インスタンスは、それぞれが標準呼び出しであるかのように、キューからメッセージを取得します。MSMQ と WCF には、この動作に影響を与えてメッセージを順次処理する設定がありますが、これは既定ではありません。

サービスを呼び出しごと (またはセッションごと) に設定したままにして、WCF にマルチスレッドを処理させます。トランザクションについては、MSDN のこのサンプルのコードを参照して、それらの操作方法を確認してください。

于 2012-04-26T18:31:19.897 に答える