クラス FileWritingMessageHandler
- 実装されたすべてのインターフェース:
org.reactivestreams.Subscriber<Message<?>>
、Aware
、BeanClassLoaderAware
、BeanFactoryAware
、BeanNameAware
、DisposableBean
、InitializingBean
、ApplicationContextAware
、Lifecycle
、Ordered
、ComponentSourceAware
、ExpressionCapable
、Orderable
、MessageProducer
、HeaderPropagationAware
、MessageTriggerAction
、IntegrationPattern
、NamedComponent
、IntegrationManagement
、ManageableLifecycle
、TrackableComponent
、MessageHandler
、reactor.core.CoreSubscriber<Message<?>>
MessageHandler
実装。ペイロードが File オブジェクトの場合、指定された宛先ディレクトリにファイルをコピーします。ペイロードがバイト配列、文字列、InputStream の場合、直接書き込まれます。それ以外の場合、ペイロード型はサポートされず、例外がスローされます。 各書き込みの後に改行を追加するには、appendNewLine
フラグを "true" に設定します。デフォルトでは "false" です。
'deleteSourceFiles' フラグが true に設定されている場合、元のファイルは削除されます。このフラグのデフォルト値は false です。詳細については、setDeleteSourceFiles(boolean)
メソッドの javadoc を参照してください。
このハンドラーの前に他のトランスフォーマーが役立つ場合があります。例: Serializable オブジェクトのペイロードは、PayloadSerializingTransformer
によってバイト配列に変換できます。同様に、ObjectToStringTransformer
は、toString()
メソッドに基づいて任意のオブジェクトを文字列に変換できます。
FileExistsMode.APPEND
は既存のファイルにコンテンツを追加します。ファイルは書き込みごとに閉じられます。FileExistsMode.APPEND_NO_FLUSH
は既存のファイルにコンテンツを追加し、データをフラッシュせずにファイルを開いたままにします。データは、flushInterval
に基づいて、またはメッセージが trigger(Message)
メソッドに送信されたとき、または flushIfNeeded
メソッドが呼び出されたときにフラッシュされます。
- 作成者:
- Mark Fisher, Iwein Fuld, Alex Peters, Oleg Zhurakousky, Artem Bilan, Gunnar Hillert, Gary Russell, Tony Falabella, Alen Turkovic, Trung Pham, Christian Tzolov, Ngoc Nhan
ネストされたクラスのサマリー
ネストされたクラス修飾子と型クラス説明static interface
FileExistsMode.APPEND_NO_FLUSH
を使用する場合、このインターフェースの実装は、flushIfNeeded(FlushPredicate)
が呼び出されたときにフラッシュしてクローズする保留中のデータがあるファイルごとに呼び出されます。static interface
FileExistsMode.APPEND_NO_FLUSH
を使用する場合、トリガーメッセージが受信されたときにフラッシュする保留中のデータがあるファイルごとに、このインターフェースの実装が呼び出されます。クラス org.springframework.integration.handler.AbstractReplyProducingMessageHandler から継承されたネストクラス / インターフェース
AbstractReplyProducingMessageHandler.RequestHandler
インターフェース org.springframework.integration.support.management.IntegrationManagement から継承されたネストクラス / インターフェース
IntegrationManagement.ManagementOverrides
フィールドのサマリー
クラス org.springframework.integration.handler.AbstractMessageProducingHandler から継承されたフィールド
messagingTemplate
クラス org.springframework.integration.context.IntegrationObjectSupport から継承されたフィールド
EXPRESSION_PARSER, logger
インターフェース org.springframework.integration.support.management.IntegrationManagement から継承されたフィールド
METER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAME
インターフェース org.springframework.core.Ordered から継承されたフィールド
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターの概要
コンストラクターコンストラクター説明FileWritingMessageHandler
(FileSE destinationDirectory) LiteralExpression
を使用してdestinationDirectoryExpression
を設定するコンストラクター。FileWritingMessageHandler
(Expression destinationDirectoryExpression) destinationDirectoryExpression
を設定するコンストラクター。メソッドのサマリー
修飾子と型メソッド説明protected BufferedOutputStreamSE
createOutputStream
(FileSE fileToWriteTo, boolean append) ファイルのバッファリングされた出力ストリームを作成します。protected BufferedWriterSE
createWriter
(FileSE fileToWriteTo, boolean append) String ペイロード用に、ファイルのバッファ付きライターを作成します。protected void
doInit()
void
flushIfNeeded
(FileWritingMessageHandler.FlushPredicate flushPredicate) FileExistsMode.APPEND_NO_FLUSH
を使用する場合、このメソッドを呼び出して、開いているファイルを選択的にフラッシュして閉じることができます。void
flushIfNeeded
(FileWritingMessageHandler.MessageFlushPredicate flushPredicate, Message<?> filterMessage) FileExistsMode.APPEND_NO_FLUSH
を使用する場合、このメソッドを呼び出して、開いているファイルを選択的にフラッシュして閉じることができます。サブクラスはこのメソッドを実装して、コンポーネント型情報を提供できます。このコンポーネントが実装するパターン型を返します。protected StringSE
protected ObjectSE
handleRequestMessage
(Message<?> requestMessage) サブクラスはこのメソッドを実装して、リクエストメッセージを処理する必要があります。boolean
void
setAppendNewLine
(boolean appendNewLine) "true" の場合、各書き込みの後に改行が追加されます。void
setAutoCreateDirectory
(boolean autoCreateDirectory) 初期化時に宛先ディレクトリが存在しない場合に、それを自動的に作成するかどうかを指定します。void
setBufferSize
(int bufferSize) ファイルへの書き込み中に使用するバッファサイズを設定します。デフォルトは 8192 です。void
setCharset
(StringSE charset) 文字列ベースのメッセージペイロードからファイルを書き込むときに使用する文字セット名を設定します。void
setChmod
(int chmod) アップロード後にファイルのアクセス許可を設定します。void
setChmodOctal
(StringSE chmod) Spring XML の利便性のためのストリング setter。void
setDeleteSourceFiles
(boolean deleteSourceFiles) 宛先ディレクトリへの書き込み後にソースファイルを削除するかどうかを指定します。void
setExpectReply
(boolean expectReply) 返信メッセージが必要かどうかを指定します。void
setFileExistsMode
(FileExistsMode fileExistsMode) 宛先が存在する場合にどうなるかを指定するFileExistsMode
を設定します。void
setFileNameGenerator
(FileNameGenerator fileNameGenerator) 宛先ファイルの名前を生成するときに使用するFileNameGenerator
戦略を提供します。void
setFlushInterval
(long flushInterval) FileExistsMode.APPEND_NO_FLUSH
が使用されているときにバッファをフラッシュする頻度を設定します。void
setFlushPredicate
(FileWritingMessageHandler.MessageFlushPredicate flushPredicate) FileExistsMode.APPEND_NO_FLUSH
が使用されているときにファイルをフラッシュするときに使用するFileWritingMessageHandler.MessageFlushPredicate
を設定します。void
setFlushWhenIdle
(boolean flushWhenIdle) flushInterval
がアイドルファイルにのみ適用されるか(デフォルト)、以前にフラッシュされたファイルまたは新しいファイルへの最初の書き込み後、その間隔でフラッシュするかを決定します。void
setNewFileCallback
(BiConsumerSE<FileSE, Message<?>> newFileCallback) 新しいファイルを作成するときに使用するコールバックを設定します。protected void
setPermissions
(FileSE resultFile) 新しく書き込まれたファイルに権限を設定します。void
setPreserveTimestamp
(boolean preserveTimestamp) 宛先ファイルのタイムスタンプを保持するには、true に設定します。void
setTemporaryFileSuffix
(StringSE temporaryFileSuffix) デフォルトでは、転送処理中のすべてのファイルは、追加のサフィックス(デフォルトでは ".writing" )とともにファイルシステムに表示されます。void
start()
void
stop()
void
FileExistsMode.APPEND_NO_FLUSH
を使用する場合、このメソッドにメッセージを送信して、必要なファイルをフラッシュできます。クラス org.springframework.integration.handler.AbstractReplyProducingMessageHandler から継承されたメソッド
doInvokeAdvisedRequestHandler, getBeanClassLoader, getRequiresReply, handleMessageInternal, hasAdviceChain, onInit, setAdviceChain, setBeanClassLoader, setRequiresReply
クラス org.springframework.integration.handler.AbstractMessageProducingHandler から継承されたメソッド
addNotPropagatedHeaders, createOutputMessage, getNotPropagatedHeaders, getOutputChannel, isAsync, messageBuilderForReply, produceOutput, resolveErrorChannel, sendErrorMessage, sendOutput, sendOutputs, setAsync, setNotPropagatedHeaders, setOutputChannel, setOutputChannelName, setSendTimeout, setupMessageProcessor, shouldCopyRequestHeaders, shouldSplitOutput, updateNotPropagatedHeaders
クラス org.springframework.integration.handler.AbstractMessageHandler から継承されたメソッド
handleMessage, onComplete, onError, onNext, onSubscribe, setObservationConvention
クラス org.springframework.integration.handler.MessageHandlerSupport から継承されたメソッド
buildSendTimer, destroy, getManagedName, getManagedType, getMetricsCaptor, getObservationRegistry, getOrder, getOverrides, isLoggingEnabled, isObserved, registerMetricsCaptor, registerObservationRegistry, sendTimer, setLoggingEnabled, setManagedName, setManagedType, setOrder, setShouldTrack, shouldTrack
クラス org.springframework.integration.context.IntegrationObjectSupport から継承されたメソッド
afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentDescription, getComponentName, getComponentSource, getConversionService, getExpression, getIntegrationProperties, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentDescription, setComponentName, setComponentSource, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toString
クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, wait, waitSE, waitSE
インターフェース reactor.core.CoreSubscriber から継承されたメソッド
currentContext
インターフェース org.springframework.integration.support.management.IntegrationManagement から継承されたメソッド
getThisAs
インターフェース org.springframework.integration.support.context.NamedComponent から継承されたメソッド
getBeanName, getComponentName
コンストラクターの詳細
FileWritingMessageHandler
LiteralExpression
を使用してdestinationDirectoryExpression
を設定するコンストラクター。- パラメーター:
destinationDirectory
- null であってはなりません- 関連事項:
FileWritingMessageHandler
destinationDirectoryExpression
を設定するコンストラクター。- パラメーター:
destinationDirectoryExpression
- null であってはなりません- 関連事項:
メソッドの詳細
setAutoCreateDirectory
public void setAutoCreateDirectory(boolean autoCreateDirectory) 初期化時に宛先ディレクトリが存在しない場合に、それを自動的に作成するかどうかを指定します。デフォルトでは、この値は true です。false に設定し、宛先ディレクトリが存在しない場合、初期化時に例外がスローされます。- パラメーター:
autoCreateDirectory
- 必要に応じてディレクトリを作成する場合は true。
setTemporaryFileSuffix
デフォルトでは、転送処理中のすべてのファイルは、追加のサフィックス(デフォルトでは ".writing" )とともにファイルシステムに表示されます。これは、このプロパティを設定することで変更できます。- パラメーター:
temporaryFileSuffix
- 一時ファイルのサフィックス。
setFileExistsMode
宛先が存在する場合にどうなるかを指定するFileExistsMode
を設定します。たとえば、FileExistsMode.APPEND
は、各Message
に新しいファイルを作成するのではなく、既存のファイルにデータを追加するようにこのハンドラーに指示します。FileExistsMode.APPEND
に設定すると、アダプターはLockRegistry
の実際のインスタンスも作成して、複数のスレッドが同じファイルに書き込みを行っているときに衝突が発生しないようにします。それ以外の場合、LockRegistry は
PassThruLockRegistry
に設定され、効果はありません。FileExistsMode.REPLACE_IF_MODIFIED
では、ファイルが存在する場合、最後に変更されたタイムスタンプがソースと異なる場合にのみ置き換えられます。それ以外の場合、書き込みは無視されます。File
SE ペイロードの場合、File
SE の実際のタイムスタンプが比較されます。他のペイロードの場合、FileHeaders.SET_MODIFIED
は既存のファイルと比較されます。ヘッダーがないか、その値がNumber
SE ではない場合、ファイルは常に置き換えられます。このモードは通常、preserveTimestamp
が true の場合にのみ意味があります。- パラメーター:
fileExistsMode
- null であってはなりません- 関連事項:
setExpectReply
public void setExpectReply(boolean expectReply) 返信メッセージが必要かどうかを指定します。そうでない場合、このハンドラーは、成功したレスポンスの場合は単に null を返すか、失敗したレスポンスの場合は例外をスローします。デフォルトは true です。- パラメーター:
expectReply
- 応答が期待される場合は true。
setAppendNewLine
public void setAppendNewLine(boolean appendNewLine) 'true' の場合、各書き込みの後に改行が追加されます。デフォルトでは "false" です。- パラメーター:
appendNewLine
- ペイロードが書き込まれた後に改行をファイルに書き込む必要がある場合は true- 導入:
- 4.0.7
getTemporaryFileSuffix
setFileNameGenerator
宛先ファイルの名前を生成するときに使用するFileNameGenerator
戦略を提供します。- パラメーター:
fileNameGenerator
- ファイル名ジェネレーター。
setDeleteSourceFiles
public void setDeleteSourceFiles(boolean deleteSourceFiles) 宛先ディレクトリへの書き込み後にソースファイルを削除するかどうかを指定します。デフォルトは false です。true に設定すると、受信メッセージにファイルペイロード、またはファイルインスタンスまたは元のファイルパスを表す文字列のいずれかを含むFileHeaders.ORIGINAL_FILE
ヘッダー値がある場合にのみ効果があります。- パラメーター:
deleteSourceFiles
- true の場合、ソースファイルを削除します。
setCharset
文字列ベースのメッセージペイロードからファイルを書き込むときに使用する文字セット名を設定します。- パラメーター:
charset
- 文字セット。
setBufferSize
public void setBufferSize(int bufferSize) ファイルへの書き込み中に使用するバッファサイズを設定します。デフォルトは 8192 です。- パラメーター:
bufferSize
- バッファサイズ。- 導入:
- 4.3
setFlushInterval
public void setFlushInterval(long flushInterval) FileExistsMode.APPEND_NO_FLUSH
が使用されているときに、バッファーをフラッシュする頻度を設定します。間隔は概算です。実際の間隔はflushInterval
とflushInterval * 1.33
の間にあり、平均はflushInterval * 1.167
です。- パラメーター:
flushInterval
- 間隔。- 導入:
- 4.3
- 関連事項:
setFlushWhenIdle
public void setFlushWhenIdle(boolean flushWhenIdle) flushInterval
がアイドルファイルにのみ適用されるか(デフォルト)、以前にフラッシュされたファイルまたは新しいファイルへの最初の書き込み後、その間隔でフラッシュするかを決定します。- パラメーター:
flushWhenIdle
- 閉じたファイルへの最初の書き込み後の間隔でフラッシュする場合は false。- 導入:
- 4.3.7
- 関連事項:
setFlushPredicate
FileExistsMode.APPEND_NO_FLUSH
が使用されているときにファイルをフラッシュするときに使用するようにFileWritingMessageHandler.MessageFlushPredicate
を設定します。trigger(Message)
を参照してください。- パラメーター:
flushPredicate
- 述語。- 導入:
- 4.3
setPreserveTimestamp
public void setPreserveTimestamp(boolean preserveTimestamp) 宛先ファイルのタイムスタンプを保持するには、true に設定します。true でペイロードがFile
SE の場合、ペイロードのlastModified
時刻が宛先ファイルに転送されます。他のペイロードの場合、存在する場合はFileHeaders.SET_MODIFIED
ヘッダー "file_setModified" が使用され、Number
SE です。- パラメーター:
preserveTimestamp
- preserveTimestamp を設定します。- 導入:
- 4.3
setChmodOctal
Spring XML の利便性のためのストリング setter。- パラメーター:
chmod
- 8 進数の文字列としてのアクセス許可(例: "600")。- 導入:
- 5.0
- 関連事項:
setChmod
public void setChmod(int chmod) アップロード後にファイルの権限を設定します。例: 所有者の読み取り / 書き込みの場合は 0600。posix ファイルのアクセス許可をサポートするファイルシステムにのみ適用されます。- パラメーター:
chmod
- 許可。- 例外:
IllegalArgumentExceptionSE
- 値が 0777 より大きい場合。- 導入:
- 5.0
setNewFileCallback
新しいファイルを作成するときに使用するコールバックを設定します。このコールバックは、fileExistsMode
がFileExistsMode.APPEND
またはFileExistsMode.APPEND_NO_FLUSH
であり、新しいファイルを作成する必要がある場合にのみ呼び出されます。コールバックは、新しい結果ファイルとハンドラーをトリガーしたメッセージを受け取ります。- パラメーター:
newFileCallback
- 新しいファイルが作成されたときに呼び出されるBiConsumer
SE コールバック。- 導入:
- 5.1
getComponentType
クラスからコピーされた説明:IntegrationObjectSupport
サブクラスはこのメソッドを実装して、コンポーネント型情報を提供できます。- 次で指定:
- インターフェース
NamedComponent
のgetComponentType
- オーバーライド:
- クラス
MessageHandlerSupport
のgetComponentType
getIntegrationPatternType
インターフェースからコピーされた説明:IntegrationPattern
このコンポーネントが実装するパターン型を返します。- 次で指定:
- インターフェース
IntegrationPattern
のgetIntegrationPatternType
- オーバーライド:
- クラス
AbstractReplyProducingMessageHandler
のgetIntegrationPatternType
- 戻り値:
- このコンポーネントが実装する
IntegrationPatternType
doInit
protected void doInit()- オーバーライド:
- クラス
AbstractReplyProducingMessageHandler
のdoInit
start
public void start()- 次で指定:
- インターフェース
Lifecycle
のstart
- 次で指定:
- インターフェース
ManageableLifecycle
のstart
stop
public void stop()- 次で指定:
- インターフェース
Lifecycle
のstop
- 次で指定:
- インターフェース
ManageableLifecycle
のstop
isRunning
public boolean isRunning()- 次で指定:
- インターフェース
Lifecycle
のisRunning
- 次で指定:
- インターフェース
ManageableLifecycle
のisRunning
handleRequestMessage
クラスからコピーされた説明:AbstractReplyProducingMessageHandler
サブクラスはこのメソッドを実装して、リクエストメッセージを処理する必要があります。戻り値は、メッセージ、MessageBuilder、任意のプレーンオブジェクトです。基本クラスは、これらの開始点のいずれかからの返信メッセージの最終的な作成を処理します。戻り値が null の場合、メッセージフローはここで終了します。- 次で指定:
- クラス
AbstractReplyProducingMessageHandler
のhandleRequestMessage
- パラメーター:
requestMessage
- リクエストメッセージ。- 戻り値:
- メッセージを処理した結果、または
null
setPermissions
新しく書き込まれたファイルに権限を設定します。- パラメーター:
resultFile
- ファイル。- 例外:
IOExceptionSE
- すべての例外。- 導入:
- 5.0
createWriter
protected BufferedWriterSE createWriter(FileSE fileToWriteTo, boolean append) throws FileNotFoundExceptionSE String ペイロード用に、ファイルのバッファ付きライターを作成します。- パラメーター:
fileToWriteTo
- ファイル。append
- 追加する場合は true。- 戻り値:
- ライター。
- 例外:
FileNotFoundExceptionSE
- ファイルが存在しない場合。- 導入:
- 4.3.8
createOutputStream
protected BufferedOutputStreamSE createOutputStream(FileSE fileToWriteTo, boolean append) throws FileNotFoundExceptionSE ファイルのバッファリングされた出力ストリームを作成します。- パラメーター:
fileToWriteTo
- ファイル。append
- 追加する場合は true。- 戻り値:
- ストリーム。
- 例外:
FileNotFoundExceptionSE
- 見つからない場合。- 導入:
- 4.3.8
trigger
FileExistsMode.APPEND_NO_FLUSH
を使用する場合、このメソッドにメッセージを送信して、必要なファイルをフラッシュできます。デフォルトでは、ペイロードは、処理中のファイルの absolutePath に一致する正規表現 (String
SE またはPattern
SE ) である必要があります。ただし、カスタムFileWritingMessageHandler.MessageFlushPredicate
が指定されている場合は、ペイロードはその実装でサポートされている任意の型にすることができます。- 次で指定:
- インターフェース
MessageTriggerAction
のtrigger
- パラメーター:
message
- メッセージ。- 導入:
- 4.3
flushIfNeeded
FileExistsMode.APPEND_NO_FLUSH
を使用する場合、このメソッドを呼び出して、開いているファイルを選択的にフラッシュして閉じることができます。開いているファイルごとに、指定されたFileWritingMessageHandler.MessageFlushPredicate.shouldFlush(String, long, long, Message)
メソッドが呼び出され、true が返された場合、ファイルがフラッシュされます。- パラメーター:
flushPredicate
-FileWritingMessageHandler.FlushPredicate
- 導入:
- 4.3
flushIfNeeded
public void flushIfNeeded(FileWritingMessageHandler.MessageFlushPredicate flushPredicate, Message<?> filterMessage) FileExistsMode.APPEND_NO_FLUSH
を使用する場合、このメソッドを呼び出して、開いているファイルを選択的にフラッシュして閉じることができます。開いているファイルごとに、指定されたFileWritingMessageHandler.MessageFlushPredicate.shouldFlush(String, long, long, Message)
メソッドが呼び出され、true が返された場合、ファイルがフラッシュされます。- パラメーター:
flushPredicate
-FileWritingMessageHandler.MessageFlushPredicate
filterMessage
- 述語に渡されるオプションのメッセージ。- 導入:
- 4.3