【问题标题】:Spring Cloud Dataflow send buffered messages to output channelSpring Cloud Dataflow 将缓冲的消息发送到输出通道
【发布时间】:2017-01-30 09:10:51
【问题描述】:

我有一个过滤器可以缓冲被拒绝的消息。一旦满足我的谓词,我想将这些缓冲的消息发送到输出通道:

public class MyFilter implements MessageSelector {

    private Buffer buff;

    ...

    @Override
    public boolean accept(final Message<?> message) {
        if (isAcceptable(message))) {
            for (final Message<?> msg : buff.getBuffered()) {
                // accept these as well
            }
            return true;
        } else {
            buff.put(message);
            return false;
        }
    }
}

如何接受缓冲的消息?有更好的方法吗?

【问题讨论】:

    标签: java spring spring-integration spring-cloud-dataflow


    【解决方案1】:

    我建议使用自定义 ReleaseStrategyaggregator 将是一个好方法。当释放策略释放组时,如果输出处理器(配置该方式时为@Aggregator 方法)返回Message&lt;?&gt; 的集合,它们将作为单独的消息释放。

    使用 Java 配置时,您可能会发现使用 Java DSL .aggregate(...) 函数比创建 @Beans 更简单。

    目前有一个 pull request 用于聚合器应用启动器。

    【讨论】:

    • 正是我想要的,谢谢!感谢您的方法提示,我更喜欢@Beans,当我有很多事情要做时,我个人觉得它更干净,因为我将更多应用程序打包到一个引导应用程序中,@Configuration 可以变得相当大。
    • 正如您在 PR 中看到的,聚合器工厂 bean 也可以提供帮助。
    猜你喜欢
    • 2019-09-14
    • 2017-07-27
    • 2012-10-20
    • 1970-01-01
    • 2021-09-16
    • 2021-06-12
    • 1970-01-01
    • 2020-12-03
    • 2018-05-30
    相关资源
    最近更新 更多