質問
ファイルイベントジョブでフォルダーを監視している場合、複数ファイルが同時にアップロードされたときにジョブが複数回実行されてしまいます。まとめて1回だけ実行する方法はありますか?
回答
ファイルイベントジョブでは、監視対象のフォルダーに複数ファイルが作成された場合、それぞれのファイルイベントを契機としてジョブが実行される仕様です。そのため、「複数ファイルが同時にアップロードされた場合はまとめて1回だけ実行する」や「最初のファイルがアップロードされてから一定時間待ってまとめて1回だけ実行する」といった制御を、ファイルイベントジョブの設定のみで行うことは難しいです。
代替策として以下の2つが考えられます。
**① トリガー用ファイルを使う方法(アップロード側の制御が可能な場合)**
処理対象のファイルをすべてアップロードした後、最後にジョブ起動用ファイル(例:trigger.done)をアップロードします。ファイルイベントジョブではこのジョブ起動用ファイルのみを監視し、ジョブが起動した際に同一フォルダー内の処理対象ファイルをまとめて取得・処理する構成とします。
構成例:
- data1.csv
- data2.csv
- data3.csv
- trigger.done ← 最後にアップロードし、このファイルのみを監視
**② スケジュールジョブを使う方法(アップロード側の制御が難しい場合)**
ファイルイベントジョブではなくスケジュールジョブを5分間隔などで実行し、その時点でフォルダー内に存在するファイルを一覧取得してまとめて処理します。この方法では「最初のファイルが入ってから5分後」ではなく「5分間隔でフォルダーを確認して処理する」動作となります。
コメント
0件のコメント
記事コメントは受け付けていません。