【问题标题】:Add setShouldAppendNewLine to FileWritingMessageHandler in Spring Integration在 Spring Integration 中将 setShouldAppendNewLine 添加到 FileWritingMessageHandler
【发布时间】: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(用于写信给stdoutstderr)提供了这个setter setShouldAppendNewLine(boolean shouldAppendNewLine)FileWritingMessageHandler 可以提供类似的设置吗?

可以说这确实是转换器的工作(如示例中所示),但是如果它已经作为CharacterStreamWritingMessageHandler 类的设置提供,则决定将其结合起来该类的特殊变压器用例,我认为这是使FileWritingMessageHandler 表现类似的合理要求。此外,SpEL 表达式的运行速度不一定与编译后的代码一样快(除非我们使用新的 spring.expression.compiler.mode=MIXED 设置),这将节省一些处理时间,因为不需要转换器步骤。

【问题讨论】:

    标签: spring spring-integration spring-el


    【解决方案1】:

    这对我来说似乎是一个合理的要求(鉴于流适配器的现有先例),尤其是在APPEND 模式下编写时。

    请打开一个“新功能”JIRA Issue

    更好的是,考虑contributing

    我们通常不会在点发布(例如 4.1.1)的中途更改架构,因此 XML 命名空间支持必须推迟到 4.2。

    但是,将属性添加到类将使其能够在使用 Java @Configuration 时进行设置,或者通过获取对处理程序的引用并在应用程序初始化期间进行设置。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-15
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    相关资源
    最近更新 更多