問題タブ [enterprise-integration]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - spring-integration-aws 動的ファイルのダウンロード
メッセージの内容に基づいて S3 からファイルをダウンロードする必要があります。つまり、ダウンロードするファイルは以前は不明であり、実行時に検索して見つける必要がありました。S3StreamingMessageSourceは、次の理由で適切ではないようです。
- メッセージを待つ必要がある場合は、ポーリングに依存しています。
S3StreamingMessageSource
フローの途中で動的に作成する方法が見つかりません。gateway(IntegrationFlow)
面白そうに見えますが、必要なのはgateway(Function<Message<?>, IntegrationFlow>)
存在しない です。
別の候補はS3MessageHandler ですが、目的のファイルを見つけるために必要なファイルの一覧表示はサポートされていません。
AWS API を直接使用して独自のメッセージ ハンドラーを実装できますが、これは珍しい要件ではないように思われるため、何か不足しているのではないかと考えています。結局のところ、すべてのアプリがそこに座って新しいファイルを求めて S3 をポーリングし続けるわけではありません。
java - 前提条件として成功したルートを持つルート (Camel)
私は現在、次のキャメルルートを持っています:
前のルートが成功した場合にのみ、受信者にファイルを送信する必要があります。
ただし、ルートを実行しているときに、 onCompletion() ブロックの .to も入力フォルダーから読み取るという結論に達しましたが、ファイルは既になくなっているため、それらを取得して受信者に書き込むことはできません。(受信者にファイルを送信した後にファイルを削除したいので、送信元に noop=true を設定することはできません...)
では、以前のルーティングが成功していることを前提条件として、ファイルを受信者にルーティングするにはどうすればよいでしょうか?