确认 JMS 消息进入子流程

Confirm JMS message into subprocess

有没有办法在子进程中确认 JMS 消息?

我有一个以 JMS 队列接收器(或 JMS 主题订阅器)开始的进程 A。它调用必须确认收到的消息的进程 B - 我正在使用 Tibco EMS 显式确认模式。

这将允许我重复使用一些部分。可以吗?

恐怕这是不可能的。确认必须始终与接收方在同一进程中。

在设计良好的架构中,您不想拆分消息传递(和确认)层,而是将所有功能处理推入一个子流程,该子流程具有一个结果参数,指示是否应保留初始消息(延迟处理稍后通过不确认)或将其标记为 "processed"(并确认)。

默认情况下,所有 (JMS) 消息都是自动确认的,因此显式确认是您在流程的配置选项卡中做出的设计选择(基于特定的消费模型)starter/step。只有当您知道该消息会发生什么并且可以延迟处理时,您才应该使用它。大多数松散耦合的消息传递在数据库意义上不是 "transactional"(除非你决定多走一英里)——所以如果你没有特殊的处理需求,宁愿坚持自动确认! BW/EMS 非常擅长处理(相当小的)消息,因此如果处理不当,不自动确认可以在几毫秒内创建重新传送并淹没您的整个系统(堆 space)。