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

时间:2013-05-28 03:52:15

标签: spring spring-integration

如何做到这一点?它适用于一个int文件: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"/>

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您是否要同时将Message有效负载写入目录集合?为了让多个文件适配器监听同一个频道,您必须使用该元素使用发布订阅频道。有关详细信息,请参阅: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