【发布时间】:2014-12-05 16:30:53
【问题描述】:
我正在使用 Spring Integration 4.1.0。
我有一个用例,我想生成一个文件,其中包含流向通道的每条消息的一行。
下面显示的是执行此操作的配置,根据此链接的“定义集成流”部分:https://spring.io/guides/gs/integration/
<feed:inbound-channel-adapter id="news" url="https://spring.io/blog.atom">
<int:poller fixed-rate="5000"/>
</feed:inbound-channel-adapter>
<int:transformer
input-channel="news"
expression="payload.title + ' @ ' + payload.link + '#{systemProperties['line.separator']}'"
output-channel="file"/>
<file:outbound-channel-adapter id="file"
mode="APPEND"
charset="UTF-8"
directory="/tmp/si"
filename-generator-expression="'SpringBlog'"/>
这似乎是一个相当常见的用例(至少在我的团队中确实如此)。您会注意到CharacterStreamWritingMessageHandler(用于写信给stdout 和stderr)提供了这个setter setShouldAppendNewLine(boolean shouldAppendNewLine)。 FileWritingMessageHandler 可以提供类似的设置吗?
可以说这确实是转换器的工作(如示例中所示),但是如果它已经作为CharacterStreamWritingMessageHandler 类的设置提供,则决定将其结合起来该类的特殊变压器用例,我认为这是使FileWritingMessageHandler 表现类似的合理要求。此外,SpEL 表达式的运行速度不一定与编译后的代码一样快(除非我们使用新的 spring.expression.compiler.mode=MIXED 设置),这将节省一些处理时间,因为不需要转换器步骤。
【问题讨论】:
标签: spring spring-integration spring-el