让我们想象一下,您有包含多个项目的传入上游消息的情况。每个项都包含参与作为管道一部分实现的业务逻辑的信息。
我可以看到的困难:消息必须被拆分并转换为多个内部事件,这些事件被进一步处理,如果其中一个失败,那么所有内部事件都应该回滚如果我们有一个上游消息 = 1 个项目,那就容易多了
从建筑的角度来看,应该如何应对这种情况?这里采用的最佳模式是什么?应该如何设置交易?
谢谢!
看起来你的问题不清楚,transaction
这个词用于不同的主题......
无论如何,让我猜猜你想要什么。
如果您要(并且可以)回滚部分业务请求,则应确保所有业务请求的全局 XA 事务,并在同一线程中执行所有拆分的子任务。因为只有这样才能让您保留和跟踪事务,并在之后回滚,如果那样的话。
如果您无法处理 XA 和单线程,那么您应该查看一些解决方案,例如补偿交易或通过索赔检查进行确认。
但这已经超出了Spring Integration的范围。