2011-07-12 13 views
1

MLLP HL7アクセラレータを使用してBizTalkにHL7メッセージを送信するシステムがあります。次に、HL7メッセージの独自のフォーマットが必要な複数の宛先システムがあるため、それぞれ異なる宛先のオーケストレーションを使用します。各オーケストレーションは、受信ポートに加入するためにフィルタを使用します。このサブスクリプションモデルはかなりうまく機能しますが、オーケストレーションの1つを停止またはアンデプロイする必要がある場合はどうなりますか。サブスクリプションモデルの欠点は、キューイングが組み込まれていないということです。オーケストレーションが削除された場合、受信ポートで受信されたメッセージはそのシステムでキューに入れられません。それとも、これは心配ですか?オーケストレーションなどのアップグレードをどうやって処理しますか?より良いデザインパターンはありますか?キューイングBizTalkサブスクリプション

答えて

4

私の意見では、トランスポート(マップ)を送信ポートに直接配置するのが少し優れています。次に、さまざまな送信ポートにフィルタを設定して、宛先システムにルーティングすることができます。

このデザインでは、新しいバージョンのマップを展開するために最初に削除する必要があるオーケストレーションがないため、更新が少し楽になります。それでは、ポートを停止して(サブスクリプションをアクティブにしておき、メッセージはサブスクライブポート用にキューに入れられます)、ポートが停止したら、新しいバージョンのマップを使用してリソース(アセンブリ)を変更し、ポートを開始してキューに入れられたメッセージの変換と送信を開始できます。ちょうどあなたの場合のようにマップを適用していない - あなたは、より複雑なワークフローをcontrollする必要がある場合

それはusally のみ使用オーケストレーションすることをお勧めします。

+0

+1。良い助言は、私たちのシナリオの大部分で動作することができます。オーケストレーションが依然として必要な私たちのより複雑なプロジェクトでは、私が記述した状況を緩和するために採用できる設計パターンを知っていますか? – Jeremy

+0

メッセージに複数のサブスクライバを割り当てることができるので、フィルタ式を使用してアウトバウンドマップを持つ送信ポートを使用できます。フィルタリングされたオーケストレーションと一緒に送信ポートでフィルタを使用できます。オーケストレーションを停止しても、それを維持すると、メッセージはキューに入れられます。何も失うことはなく、キューを再起動するとキューに格納されたメッセージが処理されます。 – schellack