首页 文章

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

提问于
浏览
0

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

谢谢

1 回答

  • 1

    不是内置的;您必须自己进行错误处理并重新排队失败的消息 .

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

    错误通道上的 ErrorMessage 将具有带有 causefailedMessage 属性的 MessagingException 的有效负载 .

相关问题