クラス FileWritingMessageHandler
- 実装されているすべてのインターフェース:
org.reactivestreams.Subscriber<Message<?>>、Aware、BeanClassLoaderAware、BeanFactoryAware、BeanNameAware、DisposableBean、InitializingBean、ApplicationContextAware、Lifecycle、Ordered、ExpressionCapable、Orderable、MessageProducer、HeaderPropagationAware、MessageTriggerAction、IntegrationPattern、NamedComponent、IntegrationManagement、ManageableLifecycle、TrackableComponent、MessageHandler、reactor.core.CoreSubscriber<Message<?>>
public class FileWritingMessageHandler extends AbstractReplyProducingMessageHandler implements ManageableLifecycle, MessageTriggerAction
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
ネストされたクラスの要約
ネストされたクラス 修飾子と型 クラス 説明 static interfaceFileWritingMessageHandler.FlushPredicateFileExistsMode.APPEND_NO_FLUSHを使用する場合、このインターフェースの実装は、flushIfNeeded(FlushPredicate)が呼び出されたときにフラッシュしてクローズする保留中のデータがあるファイルごとに呼び出されます。static interfaceFileWritingMessageHandler.MessageFlushPredicateFileExistsMode.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コンストラクターの概要
コンストラクター コンストラクター 説明 FileWritingMessageHandler(FileSE destinationDirectory)LiteralExpressionを使用してdestinationDirectoryExpressionを設定するコンストラクター。FileWritingMessageHandler(Expression destinationDirectoryExpression)destinationDirectoryExpressionを設定するコンストラクター。メソッドのサマリー
修飾子と型 メソッド 説明 protected BufferedOutputStreamSEcreateOutputStream(FileSE fileToWriteTo, boolean append)ファイルのバッファリングされた出力ストリームを作成します。protected BufferedWriterSEcreateWriter(FileSE fileToWriteTo, boolean append)String ペイロード用に、ファイルのバッファ付きライターを作成します。protected voiddoInit()voidflushIfNeeded(FileWritingMessageHandler.FlushPredicate flushPredicate)FileExistsMode.APPEND_NO_FLUSHを使用する場合、このメソッドを呼び出して、開いているファイルを選択的にフラッシュして閉じることができます。voidflushIfNeeded(FileWritingMessageHandler.MessageFlushPredicate flushPredicate, Message<?> filterMessage)FileExistsMode.APPEND_NO_FLUSHを使用する場合、このメソッドを呼び出して、開いているファイルを選択的にフラッシュして閉じることができます。StringSEgetComponentType()サブクラスはこのメソッドを実装して、コンポーネント型情報を提供できます。IntegrationPatternTypegetIntegrationPatternType()このコンポーネントが実装するパターン型を返します。protected StringSEgetTemporaryFileSuffix()protected ObjectSEhandleRequestMessage(Message<?> requestMessage)サブクラスはこのメソッドを実装して、リクエストメッセージを処理する必要があります。booleanisRunning()voidsetAppendNewLine(boolean appendNewLine)"true" の場合、各書き込みの後に改行が追加されます。voidsetAutoCreateDirectory(boolean autoCreateDirectory)初期化時に宛先ディレクトリが存在しない場合に、それを自動的に作成するかどうかを指定します。voidsetBufferSize(int bufferSize)ファイルへの書き込み中に使用するバッファサイズを設定します。デフォルトは 8192 です。voidsetCharset(StringSE charset)文字列ベースのメッセージペイロードからファイルを書き込むときに使用する文字セット名を設定します。voidsetChmod(int chmod)アップロード後にファイルのアクセス許可を設定します。voidsetChmodOctal(StringSE chmod)Spring XML の利便性のためのストリング setter。voidsetDeleteSourceFiles(boolean deleteSourceFiles)宛先ディレクトリへの書き込み後にソースファイルを削除するかどうかを指定します。voidsetExpectReply(boolean expectReply)返信メッセージが必要かどうかを指定します。voidsetFileExistsMode(FileExistsMode fileExistsMode)宛先が存在する場合にどうなるかを指定するFileExistsModeを設定します。voidsetFileNameGenerator(FileNameGenerator fileNameGenerator)宛先ファイルの名前を生成するときに使用するFileNameGenerator戦略を提供します。voidsetFlushInterval(long flushInterval)FileExistsMode.APPEND_NO_FLUSHが使用されているときにバッファをフラッシュする頻度を設定します。voidsetFlushPredicate(FileWritingMessageHandler.MessageFlushPredicate flushPredicate)FileExistsMode.APPEND_NO_FLUSHが使用されているときにファイルをフラッシュするときに使用するFileWritingMessageHandler.MessageFlushPredicateを設定します。voidsetFlushWhenIdle(boolean flushWhenIdle)flushIntervalがアイドルファイルにのみ適用されるか(デフォルト)、以前にフラッシュされたファイルまたは新しいファイルへの最初の書き込み後、その間隔でフラッシュするかを決定します。voidsetNewFileCallback(BiConsumerSE<FileSE,Message<?>> newFileCallback)新しいファイルを作成するときに使用するコールバックを設定します。protected voidsetPermissions(FileSE resultFile)新しく書き込まれたファイルに権限を設定します。voidsetPreserveTimestamp(boolean preserveTimestamp)宛先ファイルのタイムスタンプを保持するには、true に設定します。voidsetTemporaryFileSuffix(StringSE temporaryFileSuffix)デフォルトでは、転送処理中のすべてのファイルは、追加のサフィックス(デフォルトでは ".writing" )とともにファイルシステムに表示されます。voidstart()voidstop()voidtrigger(Message<?> message)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, shouldCopyRequestHeaders, shouldSplitOutput, updateNotPropagatedHeadersクラス org.springframework.integration.handler.AbstractMessageHandler から継承されたメソッド
handleMessage, onComplete, onError, onNext, onSubscribeクラス org.springframework.integration.handler.MessageHandlerSupport から継承されたメソッド
buildSendTimer, destroy, getManagedName, getManagedType, getMetricsCaptor, getOrder, getOverrides, isLoggingEnabled, registerMetricsCaptor, sendTimer, setLoggingEnabled, setManagedName, setManagedType, setOrder, setShouldTrack, shouldTrackクラス org.springframework.integration.context.IntegrationObjectSupport から継承されたメソッド
afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentName, getConversionService, getExpression, getIntegrationProperties, getIntegrationProperty, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toStringクラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, wait, waitSE, waitSEインターフェース org.springframework.integration.support.management.IntegrationManagement から継承されたメソッド
getThisAsインターフェース org.springframework.integration.support.context.NamedComponent から継承されたメソッド
getBeanName, getComponentName
コンストラクターの詳細
FileWritingMessageHandler
LiteralExpressionを使用してdestinationDirectoryExpressionを設定するコンストラクター。- パラメーター:
destinationDirectory- null であってはなりません- 関連事項:
FileWritingMessageHandler(Expression)
FileWritingMessageHandler
destinationDirectoryExpressionを設定するコンストラクター。- パラメーター:
destinationDirectoryExpression- null であってはなりません- 関連事項:
FileWritingMessageHandler(File)
メソッドの詳細
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では、ファイルが存在する場合、最後に変更されたタイムスタンプがソースと異なる場合にのみ置き換えられます。それ以外の場合、書き込みは無視されます。FileSE ペイロードの場合、FileSE の実際のタイムスタンプが比較されます。他のペイロードの場合、FileHeaders.SET_MODIFIEDは既存のファイルと比較されます。ヘッダーがないか、その値がNumberSE ではない場合、ファイルは常に置き換えられます。このモードは通常、preserveTimestampが true の場合にのみ意味があります。- パラメーター:
fileExistsMode- null であってはなりません- 関連事項:
setPreserveTimestamp(boolean)
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(boolean)
setFlushWhenIdle
public void setFlushWhenIdle(boolean flushWhenIdle)flushIntervalがアイドルファイルにのみ適用されるか(デフォルト)、以前にフラッシュされたファイルまたは新しいファイルへの最初の書き込み後、その間隔でフラッシュするかを決定します。- パラメーター:
flushWhenIdle- 閉じたファイルへの最初の書き込み後の間隔でフラッシュする場合は false。- 導入:
- 4.3.7
- 関連事項:
setFlushInterval(long),setBufferSize(int)
setFlushPredicate
FileExistsMode.APPEND_NO_FLUSHが使用されているときにファイルをフラッシュするときに使用するようにFileWritingMessageHandler.MessageFlushPredicateを設定します。trigger(Message)を参照してください。- パラメーター:
flushPredicate- 述語。- 導入:
- 4.3
setPreserveTimestamp
public void setPreserveTimestamp(boolean preserveTimestamp)宛先ファイルのタイムスタンプを保持するには、true に設定します。true で、ペイロードがFileSE の場合、ペイロードのlastModified時刻が宛先ファイルに転送されます。他のペイロードの場合、FileHeaders.SET_MODIFIEDヘッダー "file_setModified" が存在する場合はそれが使用され、NumberSE です。- パラメーター:
preserveTimestamp- preserveTimestamp を設定します。- 導入:
- 4.3
setChmodOctal
Spring XML の利便性のためのストリング setter。- パラメーター:
chmod- 8 進数の文字列としてのアクセス許可(例: "600")。- 導入:
- 5.0
- 関連事項:
setChmod(int)
setChmod
public void setChmod(int chmod)アップロード後にファイルの権限を設定します。例: 所有者の読み取り / 書き込みの場合は 0600。posix ファイルのアクセス許可をサポートするファイルシステムにのみ適用されます。- パラメーター:
chmod- 許可。- 例外:
IllegalArgumentExceptionSE- 値が 0777 より大きい場合。- 導入:
- 5.0
setNewFileCallback
新しいファイルを作成するときに使用するコールバックを設定します。このコールバックは、fileExistsModeがFileExistsMode.APPENDまたはFileExistsMode.APPEND_NO_FLUSHであり、新しいファイルを作成する必要がある場合にのみ呼び出されます。コールバックは、新しい結果ファイルとハンドラーをトリガーしたメッセージを受け取ります。- パラメーター:
newFileCallback- 新しいファイルが作成されたときに呼び出されるBiConsumerSE コールバック。- 導入:
- 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 FileNotFoundExceptionSEString ペイロード用に、ファイルのバッファ付きライターを作成します。- パラメーター:
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 に一致する正規表現 (StringSE またはPatternSE ) である必要があります。ただし、カスタム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.MessageFlushPredicatefilterMessage- 述語に渡されるオプションのメッセージ。- 導入:
- 4.3