我们的申请中存在以下问题。消息在入站通道适配器中进入,并使用持久性消息存储库在聚合器中累积。一旦发布策略中定义的条件返回true,消息就会被发送到处理中的下一个阶段。如果在下一个处理阶段抛出异常,则将回滚事务并将消息再次放入持久性消息存储库中。但是,事务不会将消息放回原始队列,因为消息在放入聚合器后会被激活。这不是我们想要的。理想情况下,如果在处理下游其中一个聚合器已批处理的消息时发生异常,则只有发生错误的单个消息将由事务回滚并放回原始队列。无论如何使用Spring Integration来执行此操作吗?
由于
答案 0 :(得分:1)
不是内置的;你必须自己做错误处理并重新排队失败的消息。
要在聚合器下游插入错误处理,您可以添加一个调用网关的服务激活器(使用返回void的方法),并向其添加error-channel
。
错误频道上的ErrorMessage
的有效负载为MessagingException
,且cause
和failedMessage
属性。