我正在使用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
)会提供此设置器setShouldAppendNewLine(boolean shouldAppendNewLine)
。可以在FileWritingMessageHandler
上提供类似的设置吗?
可以说,这实际上是变压器的工作(如示例所示),但如果它已经作为CharacterStreamWritingMessageHandler
类的设置提供,那么决定将这个特殊的变换器用例组合在该类上,我认为这是使FileWritingMessageHandler
行为相似的合理请求。此外,SpEL表达式的运行速度不一定与编译代码一样快(除非我们使用新的spring.expression.compiler.mode=MIXED
设置),这将节省一些处理时间,因为不需要变换器步骤。
答案 0 :(得分:1)
这似乎是对我的合理要求(鉴于流适配器上现有的先例),尤其是在APPEND
模式下写作时。
请打开新功能&#39; JIRA Issue
更好的是,考虑contributing!
我们通常不会在点发布中(例如4.1.1)在流中进行架构更改,因此必须将XML命名空间支持推迟到4.2。
但是,将该属性添加到类中可以在使用Java @Configuration
时设置它,或者在应用程序初始化期间获取对处理程序的引用并进行设置。