事务性会话

XMS 应用程序可以运行本地事务。 本地事务只涉及更改应用程序连接到的队列管理器或服务集成总线的资源。

仅当应用程序连接到 IBM® MQ 队列管理器或 WebSphere® Application Server 服务集成总线时,本主题中的信息才相关。 这些信息不适用于与代理程序的实时连接。

要运行本地事务,应用程序必须首先通过调用 Connection 对象的 Create Session 方法并使用参数将会话指定为事务性来创建事务性会话。 然后,会话内发送和接收的所有消息将分组到事务序列中。 应用程序提交或回滚事务开始后所发送和接收的消息时,表明事务结束。

要落实事务,应用程序可调用 Session 对象的 Commit 方法。 提交事务时,事务中发送的所有消息可用于发送到其他应用程序,而事务内收到的所有消息将得到确认,这样一来消息传递服务器便不会尝试再次将这些消息发送到应用程序。 在点到点域中,消息传递服务器还会从队列中移除收到的消息。

要回滚事务,应用程序可调用 Session 对象的 Rollback 方法。 回滚事务时,消息传递服务器将废弃事务内发送的所有消息,而事务内收到的所有消息可用于再次发送。 在点到点域中,之前收到的消息将放回队列并可再次被其他应用程序看到。

在应用程序创建事务性会话或调用 Commit 或 Rollback 方法时,会自动启动新的事务。 因此,事务性会话总是有活动事务。

当应用程序关闭事务性会话时,会发生隐式回滚。 当应用程序关闭连接时,所有连接的事务性会话将发生隐式回滚。

事务完全包含在事务性会话中。 事务不能跨越多个会话。 这表示一个应用程序不能在两个或多个事务性会话中发送和接收消息然后作为单个事务提交或回滚所有操作。