JMS トピックにサブスクライブするアプリケーション (Scala 2.10.3、Akka 2.3.1、Camel 2.13.0) があり、特定のファイルがダウンロード可能になると JMS メッセージ経由で通知されます。各 JMS メッセージには、SFTP 経由で収集できるファイルの名前とパスが含まれています。
次に、SFTP 経由でファイルをフェッチできるようにしたいのですが、JMS メッセージを受信したファイルのみをフェッチします(書き込み中のファイルをフェッチする可能性がある問題を回避するため)。
Akka Camel と Consumer モデルに適合するソリューションが必要です。SFTP エンドポイントに使用されるfile2とftp2の Camel オプションを読みましたが、次の点で助けが必要です。
&filter=... パラメータを介して endpointUri 文字列で参照できるクラス/オブジェクトを定義するにはどうすればよいですか? コンシューマーがファイルのリストをポーリングするたびに、更新されたフィルター リストが適用されるように、フィルター オブジェクトを更新できるようにしたいと考えています。
カスタム IdempotentRepository を定義して、デフォルトの 1000 より大きいキャッシュ サイズを許可するにはどうすればよいですか?
現在、私の SFTP Consumer Actor は次のようになっています (いくつかの値は編集されています ...):
class SftpConsumer extends Actor with ActorLogging with Consumer {
val host = ...
val username = ...
val keyFile = ...
def endpointUri: String = s"sftp://${host}?username=${username}&privateKeyFile=${keyFile}&idempotent=true"