0

WCF ルーティング サービスを使用する予定です。

2 つのキュー (q1、q2) があるとします。ルーティング サービスは q1 からメッセージを取得し、それを要求応答サービスに転送します。ルーティング サービスによって応答が受信されると、再度 q2 に転送されます。

応答を別のキューに転送する方法に行き詰まっていますが、これは WCF RoutingService で可能なユース ケースですか?

よろしくお願いします。

4

3 に答える 3

1

ルーティング サービスは、メッセージ交換の特定の属性 (アドレス、エンドポイント名、完全なコンテンツ ベースのルーティング用の特定の XPath ステートメントなど) を定義する MessageFilter 定義を使用します。

次の MSDN リンクは、ルーティング サービス メッセージ フィルター定義の包括的な概要を提供します:
http://msdn.microsoft.com/en-us/library/ee517424.aspx

于 2013-10-29T10:41:14.073 に答える
0

私の理解が正しければ、あなたがやりたいことを達成する方法はありません。

ルーターはメッセージ A を受信し、それを req-reply サービス (サービス B と呼びます) に転送できます。また、サービス B から返された応答を受信し、その応答を非同期メッセージとしてサービス C に転送することもできます。

ただし、ルーターがサービス B からの応答コンテンツに基づいてサービス C にメッセージ A を送信する方法はありません。その時点までに、(メッセージ A ではなく) サービス B からの応答が現在処理されているメッセージになるためです。

正しく理解できましたか?

于 2014-06-15T20:54:29.903 に答える
0

実際に呼び出される前に操作をインターセプトするために、 IOperationInvokerの調査を開始しました。

  • その時点で、他のサービスへのチャネルを手動で確立して情報を収集する必要がある場合があります。
  • 問題点は、呼び出し元への入力配列の一部として利用可能なメッセージ オブジェクトをデシリアライズすることです。オブジェクトを出力としてメッセージに変換します。
  • 非同期シナリオへの対処。

対処すべき同様のシナリオがあり、問題をどのように解決したかについての指針をいただければ幸いです。

"RoutingService" をシール クラスにしないことが最善の選択肢です。このようにして、独自のサービスを作成し、必要なコントラクトを実装して、アクションをオーバーライドできます。

于 2014-11-19T23:09:03.253 に答える