受信チャネルアダプター: リモートファイルフェッチの制御

受信チャネルアダプターを構成するときに考慮する必要がある 2 つのプロパティがあります。max-messages-per-poll は、すべてのポーラーと同様に、各ポーリングで送信されるメッセージの数を制限するために使用できます(構成された値を超える準備ができている場合)。max-fetch-size (バージョン 5.0 以降)は、一度にリモートサーバーから取得するファイルの数を制限できます。

次のシナリオでは、開始状態が空のローカルディレクトリであると想定しています。

  • max-messages-per-poll=2 および max-fetch-size=1: アダプターは、1 つのファイルをフェッチし、それを発行し、次のファイルをフェッチし、それを発行してから、次のポーリングまでスリープします。

  • max-messages-per-poll=2 および max-fetch-size=2): アダプターは両方のファイルをフェッチしてから、それぞれを発行します。

  • max-messages-per-poll=2 および max-fetch-size=4: アダプターは最大 4 つのファイル(使用可能な場合)をフェッチし、最初の 2 つ(少なくとも 2 つある場合)を発行します。次の 2 つのファイルは、次のポーリングで発行されます。

  • max-messages-per-poll=2 および max-fetch-size が指定されていない: アダプターは、すべてのリモートファイルをフェッチし、最初の 2 つを発行します(少なくとも 2 つある場合)。後続のファイルは、後続のポーリングで発行されます(一度に 2 つ)。すべてのファイルが消費されると、リモートフェッチが再度試行され、新しいファイルが取得されます。

アプリケーションの複数のインスタンスをデプロイする場合、1 つのインスタンスがすべてのファイルを「取得」し、他のインスタンスを枯渇させないように、小さな max-fetch-size をお勧めします。

max-fetch-size のもう 1 つの用途は、リモートファイルのフェッチを停止したいが、すでにフェッチされているファイルの処理を続行する場合です。MessageSource で maxFetchSize プロパティを設定すると(プログラムで、JMX を使用して、または制御バスを使用して)、アダプターがそれ以上のファイルをフェッチするのを効果的に停止しますが、ポーラーは以前にフェッチされたファイルのメッセージを送信し続けます。プロパティが変更されたときにポーラーがアクティブである場合、変更は次のポーリングで有効になります。

バージョン 5.1 以降、シンクロナイザーに Comparator<FTPFile> を提供できます。これは、maxFetchSize でフェッチされるファイルの数を制限するときに役立ちます。

FileListFilter 構成に関する情報については、一般的な FTP 受信チャネルアダプターの章も参照してください。