2016-08-12 8 views
1

ファイルが順番に送信される必要があります。例えば、3つのバイナリファイルF1、F2、F2があり、それらはF1、F2、F3の順に来る。これは、同じ順序、すなわちF1、F2およびF3での配送でなければならない。それは幸せなワークフローで動作します。Apache Camel統合を使用したバイナリペイロードの順次配信?

しかし、ネットワークの不具合によってF1の配信が失敗すると、このシーケンスが中断されます。これまで

私の研究:

    私たちは、問題が解決されるまで再試行を続けることができ
  1. ないグッドデザイン
  2. makeプロセスの同期と成功を送ったり、ソース・システムに失敗し、ソースシステム次のペイロードまたは同じペイロードを送信します。それは、他のシステムの性能と関与に費用がかかる。

また、基本的な電流フローの仕組みについては?

ソースシステムRESTクライアントを使用してレストサービスにバイナリデータを送信し、FTPサーバーに接続し、バイナリペイロードをrequireフォルダに送信します。

詳細情報が必要な場合は下記のコメント

+1

この処理を非同期にすると、 F1が最初に納品されることを保証する方法は? –

+0

申し訳ありませんが、私は同期を言うことを意味します。私は質問を更新します。 –

+0

メッセージを順番に送信するには、いくつかのIDが必要です。 2時間前に送られたF1がこのバッチ用のF1であることを、どのように知っていましたか?メッセージを特定し、一時的なキュー(activemq)にメッセージを格納し、3つのシーケンスが一致した後にFTPサーバーに送信する必要があります。何かが壊れた場合は、欠落しているものが到着するまで、それらを一時キューに保管してください。 –

答えて

0

あなたは論理的に互換性のない機能要件があります。あなたは注文を維持したいと思うが、「1.問題が解決するまで再試行を続けることができる。いいデザインではない」。

両方があるのは難しいです。また、RESTエンドポイントへの送信は本質的に非同期であり、2つのメッセージがRESTエンドポイントに送信されたときには順序を推定すべきではありません。

私はシングルスレッドのポーリングコンシューマをお勧めします。エラーハンドラでエラーの通知を送信します。

関連する問題