Spring Integration:消息聚合器和事务回滚

时间:2014-01-26 12:36:48

标签: spring-integration

我们的申请中存在以下问题。消息在入站通道适配器中进入,并使用持久性消息存储库在聚合器中累积。一旦发布策略中定义的条件返回true,消息就会被发送到处理中的下一个阶段。如果在下一个处理阶段抛出异常,则将回滚事务并将消息再次放入持久性消息存储库中。但是,事务不会将消息放回原始队列,因为消息在放入聚合器后会被激活。这不是我们想要的。理想情况下,如果在处理下游其中一个聚合器已批处理的消息时发生异常,则只有发生错误的单个消息将由事务回滚并放回原始队列。无论如何使用Spring Integration来执行此操作吗?

由于

1 个答案:

答案 0 :(得分:1)

不是内置的;你必须自己做错误处理并重新排队失败的消息。

要在聚合器下游插入错误处理,您可以添加一个调用网关的服务激活器(使用返回void的方法),并向其添加error-channel

错误频道上的ErrorMessage的有效负载为MessagingException,且causefailedMessage属性。