1

少し変わった問題があります.2つのシングルトンオーケストレーションがあります.Singleton-AとSingleton-Bと呼びましょう.

Singleton-A は、タイプ Message-A のメッセージをアセンブルし、直接バインドされたオーケストレーション ポートを介してメッセージ ボックスに送信します。これはシングルトンであるため、1 つのホスト インスタンスでのみ実行する必要があります。したがって、各 Message-A は正しい順序 1、2、3、4 などでメッセージボックスに送信されます。HAT を使用して、これが正しいことを確認できます。

Singleton-B には Message-A へのサブスクリプションがあります。Singleton-B には、Singleton-A からのメッセージを受信するための論理受信ポートがあります。この受信ポートでは、配信が true に設定されています。もちろん、Singleton-B もシングルスレッドです。しかし、Singleton-A によって送信されたメッセージが Singleton-B によって消費されると、メッセージは間違った順序で消費されます 1、2、4、3... など。再び HAT を見ると、これが真実であることがわかります。

Singleton-B がメッセージを処理する順序は、完全に決定論的ではないようです。ここで何が起きてるの?サブスクリプションの評価および/またはホスト キューのエンキュー プロセスはマルチスレッド化されていますか? BizTalk がシングルトン オーケストレーション間の順序付き配信をサポートしないと想定するのは適切ですか?

4

1 に答える 1

1

これは未解決の問題です。BizTalk のバグだと思います。ただし、シングルトン オーケストレーションが他のシングルトン オーケストレーションの出力に直接バインドされないように、ソリューションを再構築しました。

ちなみに、BizTalk は主に大量の並列メッセージ処理用に設計されているため、これはそもそも悪い設計です。

于 2013-01-05T14:24:17.137 に答える