クラス FileReadingMessageSource
- 実装されているすべてのインターフェース:
Aware、BeanFactoryAware、BeanNameAware、DisposableBean、InitializingBean、Lifecycle、MessageSource<FileSE>、IntegrationPattern、NamedComponent、IntegrationInboundManagement、IntegrationManagement、ManageableLifecycle
MessageSource。特定のファイルのメッセージを防ぐために、FileListFilter を指定できます。デフォルトでは、XML または DSL で構成する場合、AcceptOnceFileListFilter が使用されます。これにより、ファイルがディレクトリから 1 回だけ取得されるようになります。 ファイルの読み取りに関する一般的な問題は、準備が整う前にファイルが検出される可能性があることです。デフォルトの AcceptOnceFileListFilter はこれを防ぎません。ほとんどの場合、ファイル書き込みプロセスが読み取りの準備ができたらすぐに各ファイルの名前を変更すると、これを防ぐことができます。デフォルトの AcceptOnceFileListFilter で構成された、準備ができている(たとえば、既知のサフィックスに基づく)ファイルのみを受け入れるパターンマッチングフィルターを使用すると、これが可能になります。
外部 DirectoryScanner を使用する場合は、FileReadingMessageSource のインスタンスではなく、FileLocker および FileListFilter オブジェクトを外部 DirectoryScanner に設定する必要があります。それ以外の場合は、IllegalStateExceptionSE が発生します。
ComparatorSE を使用して、PriorityBlockingQueueSE 内のファイルの内部順序を確認できます。これは ResequencingMessageGroupProcessor と同じ保証を提供しませんが、ファイルの書き込みとダウンストリームの失敗がまれな場合はそれで十分かもしれません。
FileReadingMessageSource は、receive() の同時呼び出しとメッセージ配信コールバックで完全にスレッドセーフです。
- 作成者:
- Iwein Fuld, Mark Fisher, Oleg Zhurakousky, Gary Russell, Artem Bilan, Steven Pearce, Patryk Ziobron
ネストされたクラスの要約
ネストされたクラスインターフェース org.springframework.integration.support.management.IntegrationManagement から継承されたネストクラス / インターフェース
IntegrationManagement.ManagementOverridesフィールドのサマリー
クラス org.springframework.integration.util.AbstractExpressionEvaluator から継承されたフィールド
EXPRESSION_PARSER, loggerインターフェース org.springframework.integration.support.management.IntegrationManagement から継承されたフィールド
METER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAMEコンストラクターの概要
コンストラクターコンストラクター説明無制限の容量の自然に順序付けられたキューを使用して FileReadingMessageSource を作成します。FileReadingMessageSource(int internalQueueCapacity) 指定された容量の制限付きキューを使用して FileReadingMessageSource を作成します。FileReadingMessageSource(ComparatorSE<FileSE> receptionOrderComparator) 渡されたComparatorSE で順序付けされたPriorityBlockingQueueSE を使用して FileReadingMessageSource を作成します。メソッドのサマリー
修飾子と型メソッド説明protected AbstractIntegrationMessageBuilder<FileSE> サブクラスはこのメソッドを実装する必要があります。booleanbooleanvoid余裕がある場合は、失敗したメッセージを "toBeReceived" キューに追加し直します。protected voidonInit()voidsetAutoCreateDirectory(boolean autoCreateDirectory) 初期化時にソースディレクトリがまだ存在しない場合に、ソースディレクトリを自動的に作成するかどうかを指定します。voidsetDirectory(FileSE directory) 入力ディレクトリを指定します。voidsetFilter(FileListFilter<FileSE> filter) FileListFilterを設定します。voidsetLocker(FileLocker locker) 重複処理からファイルを保護するために使用するFileLockerを設定します。voidsetScanEachPoll(boolean scanEachPoll) 内部キューが各ポーリングで入力ディレクトリの最新のコンテンツでリフレッシュされるようにする場合は、このフラグを設定します。voidsetScanner(DirectoryScanner scanner) オプションで、FileReadingMessageSource.WatchServiceDirectoryScannerなどのカスタムスキャナーを指定します。voidsetUseWatchService(boolean useWatchService) このFileReadingMessageSourceを切り替えて、内部FileReadingMessageSource.WatchServiceDirectoryScannerを使用します。voidsetWatchDirPredicate(PredicateSE<PathSE> watchDirPredicate) Files.walkFileTree(Path, Set, int, FileVisitor)SE 呼び出しでディレクトリがWatchServiceSE に適格であるかどうかを確認するようにPredicateSE を設定します。voidsetWatchEvents(FileReadingMessageSource.WatchEventType... watchEvents) WatchServiceSE イベント型。voidsetWatchMaxDepth(int watchMaxDepth) useWatchServiceが有効な場合、Files.walkFileTree(Path, Set, int, FileVisitor)SE API の最大深さを設定します。voidstart()voidstop()クラス org.springframework.integration.endpoint.AbstractMessageSource から継承されたメソッド
buildMessage, destroy, getBeanName, getComponentName, getManagedName, getManagedType, getOverrides, isLoggingEnabled, receive, registerMetricsCaptor, setBeanName, setHeaderExpressions, setLoggingEnabled, setManagedName, setManagedTypeクラス org.springframework.integration.util.AbstractExpressionEvaluator から継承されたメソッド
afterPropertiesSet, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, getBeanFactory, getEvaluationContext, getEvaluationContext, getMessageBuilderFactory, setBeanFactory, setConversionService, setSimpleEvaluationContextクラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSEインターフェース org.springframework.integration.support.management.IntegrationManagement から継承されたメソッド
getThisAs, isObserved, registerObservationRegistryインターフェース org.springframework.integration.core.MessageSource から継承されたメソッド
getIntegrationPatternType
コンストラクターの詳細
FileReadingMessageSource
public FileReadingMessageSource()無制限の容量の自然に順序付けられたキューを使用して FileReadingMessageSource を作成します。FileReadingMessageSource
public FileReadingMessageSource(int internalQueueCapacity) 指定された容量の制限付きキューを使用して FileReadingMessageSource を作成します。これは、大きなディレクトリから読み取るときに、このコンポーネントのメモリフットプリントを削減するために使用できます。- パラメーター:
internalQueueCapacity- 内部的に受信するファイルをキャッシュするために使用されるキューのサイズ。このキューは、ディレクトリスキャンを最適化するために大きくすることができます。scanEachPoll を false に設定し、キューのサイズを大きくすると、新しいディレクトリリストが実行される前に、キューは一度いっぱいになり、その後完全に空になります。これは、ディレクトリ内の多数のファイルのスキャンを減らすのに特に役立ちます。
FileReadingMessageSource
渡されたComparatorSE で順序付けされたPriorityBlockingQueueSE を使用して FileReadingMessageSource を作成します。使用するキューのサイズは、すべてのファイルを並べ替えるために、入力ディレクトリ内のすべてのファイルを保持するのに十分な大きさである必要があります。キューのサイズを制限することは、順序付けと相互に排他的です。同時アクセスでは、ファイル配信のオーダーについて保証することはできません。
- パラメーター:
receptionOrderComparator- 内部キュー内のファイルを順序付けるために使用されるコンパレータ
メソッドの詳細
setDirectory
setScanner
オプションで、FileReadingMessageSource.WatchServiceDirectoryScannerなどのカスタムスキャナーを指定します。- パラメーター:
scanner- スキャナーの実装
getScanner
- 戻り値:
- この
FileReadingMessageSourceのDirectoryScanner。 - 導入:
- 4.2
setAutoCreateDirectory
public void setAutoCreateDirectory(boolean autoCreateDirectory) 初期化時にソースディレクトリがまだ存在しない場合に、ソースディレクトリを自動的に作成するかどうかを指定します。デフォルトでは、この値は true です。false に設定され、ソースディレクトリが存在しない場合、初期化時に例外がスローされます。- パラメーター:
autoCreateDirectory- このコンポーネントの起動時に、監視対象のディレクトリを作成する必要がありますか?
setFilter
FileListFilterを設定します。デフォルトでは、境界のないAcceptOnceFileListFilterが使用されます。ほとんどの場合、変更や重複の関心事に対処するために、カスタマイズされたFileListFilterが必要になります。複数のフィルターが必要な場合は、CompositeFileListFilterを使用してグループ化できます。付属のフィルターはスレッドセーフである必要があります。
- パラメーター:
filter- フィルター
setLocker
重複処理からファイルを保護するために使用するFileLockerを設定します。付属の FileLocker はスレッドセーフである必要があります
- パラメーター:
locker- ロッカー
setScanEachPoll
public void setScanEachPoll(boolean scanEachPoll) 内部キューが各ポーリングで入力ディレクトリの最新のコンテンツでリフレッシュされるようにする場合は、このフラグを設定します。デフォルトでは、この実装はディレクトリを再度参照する前にキューを空にします。順序が関係する場合は、このフラグを設定した場合の影響を考慮することが重要です。このクラスが保持している内部
BlockingQueueSE は、このフラグが false に設定されている場合はファイルシステムと同期していない可能性が高くなりますが、true に設定されている場合はより頻繁に変更されます (コストのかかる再順序付けが発生します)。- パラメーター:
scanEachPoll- コンポーネントを再スキャンする必要があるかどうか (バックログ全体が配信されるまで再スキャンしないのとは対照的に)
setUseWatchService
public void setUseWatchService(boolean useWatchService) このFileReadingMessageSourceを切り替えて、内部FileReadingMessageSource.WatchServiceDirectoryScannerを使用します。- パラメーター:
useWatchService-trueでFileReadingMessageSource.WatchServiceDirectoryScannerに切り替えるbooleanフラグ。- 導入:
- 4.3
- 関連事項:
isUseWatchService
public boolean isUseWatchService()setWatchEvents
- パラメーター:
watchEvents-FileReadingMessageSource.WatchEventTypeのセット。- 導入:
- 4.3
- 関連事項:
setWatchMaxDepth
public void setWatchMaxDepth(int watchMaxDepth) useWatchServiceが有効な場合、Files.walkFileTree(Path, Set, int, FileVisitor)SE API の最大深さを設定します。デフォルトはInteger.MAX_VALUESE - ツリー全体を歩きます。- パラメーター:
watchMaxDepth-Files.walkFileTree(Path, Set, int, FileVisitor)SE の深さ。- 導入:
- 6.1
setWatchDirPredicate
Files.walkFileTree(Path, Set, int, FileVisitor)SE 呼び出しでディレクトリがWatchServiceSE に適格であるかどうかを確認するようにPredicateSE を設定します。- パラメーター:
watchDirPredicate-PredicateSE を使用して、ウォーキングのディレクトリを確認します。- 導入:
- 6.1
getComponentType
- 次で指定:
- インターフェース
NamedComponentのgetComponentType
start
public void start()- 次で指定:
- インターフェース
Lifecycleのstart - 次で指定:
- インターフェース
ManageableLifecycleのstart
stop
public void stop()- 次で指定:
- インターフェース
Lifecycleのstop - 次で指定:
- インターフェース
ManageableLifecycleのstop
isRunning
public boolean isRunning()- 次で指定:
- インターフェース
LifecycleのisRunning - 次で指定:
- インターフェース
ManageableLifecycleのisRunning
onInit
protected void onInit()- オーバーライド:
- クラス
AbstractExpressionEvaluatorのonInit
doReceive
クラスからコピーされた説明:AbstractMessageSourceサブクラスはこのメソッドを実装する必要があります。通常、返される値は型 T のpayloadになりますが、返される値はペイロードが型 T であるMessageインスタンスである場合もあります。また、追加のヘッダーの設定に使用されるAbstractIntegrationMessageBuilderである場合もあります。- 次で指定:
- クラス
AbstractMessageSource<FileSE>のdoReceive - 戻り値:
- 返された値。
onFailure