0

如何才能做到这一点?它适用于一个 int-file:outbound-channel-adapter,但是当我添加另一个时我无法使其工作。我实际上添加了另一组单独的通道/适配器,但它仍然不起作用。

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

这是我尝试过的代码:

    <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"/>
4

1 回答 1

0

如果我对您的理解正确,您是否想同时将消息有效负载写入目录集合?为了让多个文件适配器监听同一个频道,您必须使用使用该元素的发布订阅频道。更多信息请参见:http ://static.springsource.org/spring-integration/reference/html/messaging-channels-section.html#channel-configuration-pubsubchannel

使用File Outbound Channel Adapter时,您还可以使用自 Spring Integration 2.2 起可用的directory-expression属性。它为您提供完整的 SpEL 表达式支持。因此,您要写入的目录可以是例如提供的消息头。欲了解更多信息,请参阅:

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

于 2013-05-28T04:21:26.427 回答