'MyMessage'メッセージ、または物理WCF送信ポートにバインドされた論理送信ポートに送信されるのと同じメッセージをサブスクライブしようとしていますか?
あなたは次のように述べています:
次に、「MyMessage」メッセージがさらにマッピングされ、オーケストレーションの論理送信ポートを使用してWebサービスに送信されます。次に、WCF送信ポートがオーケストレーションにバインドされ、すべてが正常に機能します。
メッセージがMsgBoxに公開されていません
あなたが説明したことから、「MyMessage」メッセージのオーケストレーションに送信シェイプ/論理送信ポートの組み合わせがないことをお勧めします。そのため、送信ポートフィルターでこのメッセージタイプを手動でサブスクライブすることはできません。 。「失敗したルーティングレポート」メッセージについて言及していないという事実は、これが事実であることをさらに示唆しています。このメッセージタイプは、MsgBoxに公開されるメッセージのサブスクリプションが見つからない場合に生成されます。
メッセージの「MessageType」をキャプチャします
ただし、WCF送信ポートを介して送信しているメッセージのコピーをキャプチャする必要がある場合は、そのメッセージタイプを決定し、メッセージをファイルに書き出す2番目の送信ポートサブスクリプションでそれを使用する必要があります。
使用するMessageTypeがわからない場合は、この情報を判別するための簡単なトリックがあります。
- WCF送信ポートを停止(登録解除ではない)
- 通常どおり、オーケストレーションを介してメッセージを送信します。メッセージは、WCF送信ポートのBizTalk管理コンソールで「SuspendedResumable」としてマークされます。
- BizTalk管理コンソールでメッセージを開き、その「メッセージコンテキスト」を表示します。メッセージコンテキストには、その'MessageType'プロパティが表示されます。これを使用して、使用するサブスクリプションフィルターを理解できます。
- WCF送信ポートを開始して、メッセージをフラッシュします。
または、オーケストレーションを変更したくない場合は、メッセージが(元の)WCF送信ポートの送信パイプラインを通過するときにメッセージをアーカイブしてみてください。独自のアーカイブコンポーネントを作成するか、既存の商用コンポーネントを使用してください。このようにアーカイブコンポーネントを使用することで、追加のサブスクリプションと関連する送信ポートのメンテナンスの費用を節約できます。
アップデート:
OPがオーケストレーションからメッセージボックスに中間メッセージを送信していないように聞こえます(コメントを参照)。メッセージサブスクリプションは、メッセージがメッセージボックスに公開された場合にのみ機能します。この場合、問題のメッセージ(「メッセージB」)は、オーケストレーションのコンテキストと存続期間内にのみ存在する中間メッセージです。OPは、メッセージを送信ポート経由でサブスクライブできるように、オーケストレーション内のダイレクトバウンドポートにメッセージを送信する必要があります。