2

これが私のシナリオです。BizTalk は、共有/中央ドキュメント ライブラリからファイルを転送する必要があります。まず BizTalk は、ライブラリ内のこのドキュメントへの参照/パスを含む受信メッセージを受信します。次に、このライブラリからそれを読み取って送信する必要があります (場合によっては別のアダプターを介して)。これは本質的に、ClaimCheck EAI パターンからそれほど離れていないシナリオです。

クレーム チェックを実装するいくつかの方法が文書化されており、特にBizTalk ESB ツールキット クレーム チェックと BizTalk 2009: 非常に大きなメッセージの処理、パート I およびパート IIです。ただし、これらの実装では、送信パイプラインが「チェックイン」されたストリームをすぐに読み取ることができるという前提があります。</p>

これは私の場合ではありません。ドキュメントが共有ライブラリで利用可能になるまでには時間がかかるため、最初に受信したメッセージを遅らせることはできません。つまり、オーケストレーションを介して遅延を導入するか、ドキュメントがまだ存在しない場合に送信ポートが後で再試行されるようにするかの 2 つのオプションがあります。

(遅延はオーケストレーションによってのみ導入できます。BizTalk には時間ベースのサブスクリプションはありません。そうですか?)

これはメッセージのみのフローなので、オーケストレーションをスキップできると思います。「パイプラインを使用したメッセージのみのソリューションでカスタム再試行ロジック」を使用する方法を見てきましたが、必要なのは、(アダプターによって実行される) 再試行動作を制御する方法だけでなく、パイプライン内からそれを強制する方法でもあります。 …</p>

これまでに行ったすべての試みは、送信アダプターに再試行が構成されていても、自動的に再試行されない中断されたメッセージで終わりました...これが実際に可能である場合、どこで/何をすべきですか?

そうそう…そして待ち行列があります…残念ながらオンプレミスでもクラウドでもありません;)

OK、私は限界を押し広げているかもしれません…しかしただの好奇心から…</p>

あなたの助けと提案に感謝します!

4

2 に答える 2

2

これが Orch なしでどのように行われるのか、私は困惑しています。私が考えることができる唯一の方法は、次のようなものです。

  • 初期メッセージの受信ポートは、メッセージを「食べる」だけです。たとえば、これらのメッセージを Null アダプタを使用してダミーの送信ポートにサブスクライブし、それらを完全に無視します。
  • 受信ポートを使用して共有ドキュメント ライブラリを監視し、? 何か新しい?そこに文書化します。
  • 見つかったドキュメントは送信ポートによってサブスクライブされ、ダウンストリームに送信されます。

オーケストレーション ベースのアプローチは、次のようになります。

  • Orch は、ライブラリへの「今後の」新しいファイルの初期通知の受信によってトリガーされます。最初の通知がリクエスト レスポンスの場合 (例: 公開された Web サービスの場合、即座に同期的にレスポンスを発行できます)
  • 別の受信ポートを使用して、可用性の監視と共有ライブラリからのファイルの取得を行い、元の通知メッセージ (ファイル名やその他のキーなど) に関連付けます。
  • ドキュメントが利用できない場合に再試行を処理するメカニズム。たとえば、ドキュメントが共有ライブラリに到達しない場合など、最終的にタイムアウトになる可能性があります。
  • 成功すると、ドキュメントをダウンストリームに送信するための送信ポート

Thread.Sleep()Orch に delay shape を配置すると、BTS は SQL レコードの「awaken」タイムスタンプの広告スタンプを計算するだけで、orch を脱水してスレッドを解放できるため、カスタム アダプターまたはパイプライン コードで使用または同様のコードを使用するよりもスケーラビリティが向上します。

「ファイルはまだありますか?」チェックは、再試行ループを使用して実行できます。各チェックが失敗した後に遅延し、並列分岐を使用して、たとえば 1 時間ほど後にタイムアウトを設定できます。

于 2012-11-01T04:04:32.353 に答える
0

ポーリング間隔は受信場所で制御できるため、Biztalkに時間ベースのサブスクリプションがないという意味がわかりません。スケジュールウィンドウもあります。

遅延を導入する1つの方法は、その最初のメッセージを内部Webサービスに送信することです。これにより、指定された時間間隔の後にメッセージがBiztalkにポストバックされます。

メッセージをメッセージボックスにポストバックするだけのループバックアダプタもあります。これは、遅延を追加するために修正できます。

于 2012-11-15T17:16:00.407 に答える