我有一个缓冲被拒绝邮件的过滤器。一旦我的谓词得到满足,我想将这些缓冲的消息发送到输出通道:
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;
}
}
}
我如何接受缓冲的消息?有更好的方法吗?
答案 0 :(得分:1)
我建议使用自定义ReleaseStrategy
的{{3}}是一种很好的方法。当发布策略释放组时,如果输出处理器(配置该方式时为@Aggregator
方法)返回Message<?>
的集合,它们将作为单独的消息发布。
使用Java配置时,您可能会发现使用Java DSL .aggregate(...)
函数比创建@Bean
更简单。
聚合器应用启动器目前有aggregator。