写入Spring Integration文件适配器中的多个目录



这是怎么做到的?它可以很好地使用一个int-file:outbound-channel-adapter,但是当我添加另一个时,我无法使它工作。我实际上添加了另一个单独的通道/适配器集,但它仍然不起作用。

在int-file:outbound-channel-adapter标签中,实际上有一个"directory"属性,但它只接受单个目录路径。

下面是我试过的代码:

    <int-file:outbound-channel-adapter id="outputDirectory1"
                                   directory="${output.directory1}"
                                   channel="fileWriterChannel1"
                                   filename-generator-  expression="headers.get('filename')"
                                   delete-source-files="true"/>
<int-file:outbound-channel-adapter id="outputDirectory2"
                                   directory="${output.directory2}"
                                   channel="fileWriterChannel2"
                                   filename-generator-expression="headers.get('filename')"
                                   delete-source-files="true"/>

下面是通道,而bean是实际的写入器。注意,这两个通道都引用bean (ref="messageTransformer"):

    <int:transformer id="messageToStringTransformer1"
                 input-channel="messageTypeChannel"
                 output-channel="fileWriterChannel1"
                 ref="messageTransformer"
                 method="write"/>
<int:transformer id="messageToStringTransformer2"
                 input-channel="messageTypeChannel"
                 output-channel="fileWriterChannel2"
                 ref="messageTransformer"
                 method="write"/>
<bean id="messageTransformer" class="com.message.writer.DefaultMessageWriter"/>

如果我理解正确,您是否希望同时将Message有效负载写入目录集合?为了让多个文件适配器侦听相同的通道,您必须使用元素使用Publish Subscribe channel 。更多信息请访问:http://static.springsource.org/spring-integration/reference/html/messaging-channels-section.html#channel-configuration-pubsubchannel

当使用文件出站通道适配器时,您还可以使用目录表达式属性,该属性从Spring Integration 2.2开始可用。它为您提供了完整的SpEL表达式支持。因此,您想要写入的目录可以是提供的消息头。更多信息请参见:

http://static.springsource.org/spring-integration/reference/html/files.html file-writing-output-directory

最新更新