1

私はSFTP統合でSpringをセットアップし、SFTPサーバーをポーリングしてファイルをプルダウンしています。春の統合SFTP - 投稿後の転送処理

私が知りたいことは、ダウンロードが完了したら各ファイルでタスクを実行することが可能なのでしょうか?私はファイルシステムの腕時計の道を踏み出すことを望んでいません - これのために春のSFTPに組み込まれたものがありますか?

ドキュメントを見て、それはチャネルで達成できるように見えます。私は、顧客のインターセプタまたは類似を発射する何をする必要があるかわからないんだけど

<int:channel id="receiveChannel"> 
    <int:queue /> 
</int:channel> 

これは私のような受信機チャネルが現在に見えるものです。

編集:春のドキュメントから、この意見:

SFTPインバウンド・チャネル・アダプターがポーリングの消費者であることを理解することも重要であるため、あなたがポーラー(グローバルなデフォルトまたはローカルのいずれかを設定する必要がありますサブ要素)。ファイルがローカルディレクトリに転送されると、ペイロードタイプとしてjava.io.Fileを持つMessageが生成され、channel属性で識別されるチャネルに送信されます。

私はこれを実装する方法がわかりません。例は見つかりません。

答えて

0

これを遭遇する他の人の利益のために、ALLファイルが転送されたときにのみ、メッセージが受信チャンネルに送信されるという問題があります。それらは一度に1つ(私が予想したように)扱われません。私の場合は、リモートSFTPサーバ上に何千もの大きなファイルがあり、ダウンロードされたすべてのファイルが受信者のチャンネルに送られただけです。

これは仕様であるかどうかわかりません。

1

Enterprise Integration Patternsの先頭から始めて、channelが統合の最も重要なファーストクラスの市民であることを自分で判断する必要があるようです。

だから、あなたは、リモートディレクトリからエンティティは、(あなたはRTFMに気づいたように)java.io.Fileにそれらを回し、設定されたチャンネルにMessageの​​として送信世論調査に責任<int-sftp:inbound-channel-adapter>を、持っています。そのチャンネルの加入者はメッセージを受け取り、File​​の下でいくつかの処理を行います。

詳細については、Spring Integration Samplesも参照してください。

+0

ええと、私は削除された答えでそれを試みました、そして、私はそれが働いていたと思いました。しかし、送信イベントは唯一のイベントであり、アプリケーションを再起動したときだけです。 –

+0

もっと詳しくdocsを読んでサンプルに従ってください。アプリケーションの作業中にリモートディレクトリに新しいファイルがないため、開始時にのみイベントが表示されます。実際には、 '' interceptor'ではなく、 ''を行うべきです。なぜあなたは私の答えが不十分であるかを疑問に思っているのか分かりません。私たちはさまざまな言語を話すだけで、あなたのアプリケーションであなたのために働きたいと思っています。いくつかのドキュメントを読むだけで、適切なサンプルを使ってエクササイズをしてください。 –

+0

ありがとうございましたArtem - 私はservice-activatorの使用に切り替えました。ただし、システムが再起動したときにのみ、このメソッドが起動されます。ドキュメントからは、ファイルのダウンロードが完了したときに起動すると思っていました。私はドキュメントに従うようにしています。 –

関連する問題