这是怎么做到的?它可以很好地使用一个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