配置全局事务协调(两阶段落实)
使用事务管理器以全局方式协调消息流事务可以确保事务的数据完整性。
准备工作
请阅读 “消息流事务 ”以了解 IBM® App Connect Enterprise 如何处理事务。 根据处理部署的消息流期间访问的外部资源管理器,您必须完成依赖于资源的一组相应的任务,以确保正确配置所有资源。 例如,您可能必须遵循 使用数据库中的任务来创建和配置数据库。
与集成节点关联的 IBM MQ 队列管理器承担事务管理器的角色,这意味着 App Connect Enterprise 在处理消息时需要访问 IBM MQ。 如需更多信息,请参阅 《 IBM App Connect Enterprise 与 IBM MQ 之间的交互 》。
您或消息流开发者还必须确保将部署到集成节点的消息流设置为支持协调。 配置消息流的事务性中描述了正确配置消息流的任务。
关于此任务
如果已配置指定本地 MQ 队列管理器的集成节点,那么可以为集成节点管理的消息流设置全局协调事务。 然后,指定的队列管理器将扮演事务管理器角色。
以下外部资源可以参与全局协调的消息流事务:
- IBM MQ 队列和消息
- CICS®
- 数据库
- JMS 提供程序
在分布式平台上,集成节点的缺省行为是使用一阶段落实方法来管理所有消息流事务。 在许多情况下,这种方法已经足够,但如果您的业务需要确保数据完整性和一致性(例如出于审计目的或涉及金融交易),您可以通过配置集成节点,使其与本地 IBM MQ 队列管理器配合,利用 XA 协议标准,将消息流事务作为全局协调的事务进行管理(即采用两阶段提交方法)。 要对事务进行全局协调,必须对集成节点指定队列管理器,该队列管理器将扮演事务管理器角色。 对集成节点指定的队列管理器将用作全局协调资源。 其他队列管理器无法参与消息流事务。
如果在消息流运行期间与 IBM MQ 资源的连接中断,自动重连将推迟至当前事务完成之后;请参阅 “配置 MQ 节点以支持事务 ”。
- 静态注册:事务管理器会让所有使用静态注册的资源管理器参与到一个事务中,即使在该事务中资源管理器并不扮演任何角色。 因此,即使使用静态注册的所有资源管理器未主动参与该事务,它们也必须可用于每个全局协调事务的开始,否则此事务会失败。
- 动态注册:使用动态注册的资源管理器必须基于每个事务向事务管理器注册才能参与事务(即,如果作为全局协调事务的一部分对其进行更新)。 使用动态注册的资源管理器无需可用于每个全局协调事务的开始。
- 当启用 XA 支持并设置了MQSI_XA_JDBC_START_LISTENER时, JDBCType4EGListenerManager 会创建该监听器。
- 该监听器由集成服务器在内部使用,用于在 JDBC 资源上协调 XA 的两阶段提交( 2PC )操作。
- 该监听器仅绑定到本地主机( 127.0.0.1 ),因此可防止外部访问。
- 端口范围:6500–8500(每个处于活动状态的 XA 监听器都会占用一个端口)。
请遵循您的环境中相关资源管理器的指示信息,并注意它们是使用静态注册还是动态注册:
过程
结果
必须完成所有步骤,这是因为,如果未正确地对资源进行全局协调配置,那么消息流虽然将会运行,但不会对事务进行全局协调。