1

BizTalk 2006 で次のシナリオを検討してください。

受信したメッセージは、次の制約に従ってオーケストレーションまたは送信ポートにルーティングする必要があります

(Message.Type = "SomeType" AND Message.Sender = "SomeSender")
OR
(Message.Type = "SomeOtherType" AND Message.Sender = "SomeOtherSender" AND Message.IsSigned = true)
OR
(Message.Sender = "AnotherSender" AND Message.IsSigned = true)
etc...

これを行う 1 つの方法は、オーケストレーションの受信シェイプまたは送信ポートにフィルターを適用することです。

一方、メッセージ フィールドに基づいてカスタム受信パイプライン コンポーネントのメッセージ コンテキストにルーティング データ フィールドを昇格させ、フィルターに 1 つの制約のみを適用することができます。

Message.Route = "Route A"

これらの代替案のうち、ここでのパフォーマンス コストの低いソリューション (低レイテンシ) はどれですか?

前もって感謝します。

4

3 に答える 3

1

2 つのオプションの中から、私は通常、オーケストレーション フィルターを選択します。サブスクリプションの実装は非常に高速であるため、フィルタリングするセグメントがいくつかあっても大きなオーバーヘッドにはなりません。

パイプライン コンポーネントを持ち、高速化が保証されていないプロパティをオフに昇格させると、開発とメンテナンスの面でオーバーヘッドになります。

私の見解では、オーケストレーション フィルターには少しマイナス面があります (ただし、あなたの質問からは、必ずしもそれを改善するつもりはないようです)。それは、ルールがコンパイルされているという事実です (たとえば、送信ポート フィルターとは異なります)。 )

これをより動的にする必要がある場合は、パイプライン コンポーネントを記述して、構成可能にすることで何らかのメリットが得られます。

于 2009-03-16T13:58:53.613 に答える
0

送信者のクラスがある場合 (そうであるように見えます)、追加の柔軟性を提供するパーティ/役割リンクの実装を検討することもできます。

于 2009-04-22T20:56:12.647 に答える
0

レイテンシーに影響を与える主な要因は、永続ポイント (データベースへの状態の保存) の数です。

代替案 2 (パイプラインで「ルート」を促進する) により、オーケストレーションを完全に切り離すことができ (または、他の何かのために必要ですか?)、純粋なメッセージング ソリューション (ポートからポートへ) を使用できる場合、その方が高速になります。そこにオーケストレーションがあるとき。

于 2009-03-15T18:48:37.670 に答える