2

メッセージ A をメッセージ ボックスに送信するオーケストレーションがあります。これで、フィルター式に基づいてメッセージをサブスクライブする 2 つのサブスクライバー オーケストレーションができました。

サブスクライバー 1 にルーティングされるメッセージを送信すると、すべて正常に動作しますが、サブスクライバー 2 のメッセージが送信されると、宛先フォルダーにルーティングされますが、宛先フォルダーに無限のコピーが作成されます。メッセージの重複コピーの生成を停止するには、オーケストレーションを停止する必要があります。

私は何を間違っていますか?

4

2 に答える 2

2

送信しているのと同じメッセージを受信して​​いますか? その場合、受信場所がメッセージの送信時に受信されるため、無限ループが発生します。受信時にフィルターを変更し、オーケストレーションでメッセージにフラグを設定してから、おそらくそれをフィルター処理する必要があります。

于 2013-06-12T10:29:01.547 に答える
1

これは多くの場合、フィードバック ループの症状です。つまり、次のような状況です。

  • 送信ポートがメッセージを発行する場所をリッスンする受信ポートを実装します。
  • 受信した同じスキーマのメッセージ ボックスにメッセージを発行するように構成された送信ポートを使用して、直接バインドされたオーケストレーションを実装します (フィルター処理なし)。

これは、設定MessageBoxで適用される追加のフィルターがないため、直接バインド ( ) シナリオで特に一般的です。Specify Now / Later解決策は通常、サブスクライバーに追加のフィルターを追加するBTS.ReceivePortNameことです。これにより、既に処理されたメッセージを区別できるようになります。

于 2013-06-12T10:36:29.277 に答える