Sun Java System Message Queue 3.7 UR1 技术概述

事务

事务是将一条或多条消息的生成和/或使用组合到一个工作单位的方法。上述客户端和代理确认过程同样适用于事务。在这种情况下,客户端运行时环境和代理确认默认在事务级别进行。当事务提交时,将自动发送代理确认。

可以将会话配置为事务,并且 JMS API 提供了启动、提交和回滚事务的方法。

在事务中生成或使用消息时,消息服务跟踪各个发送和接收过程,并只有在 JMS 客户端发出提交事务的调用时才完成这些操作。如果事务中特定的发送或接收操作失败,将引发异常。客户端代码可以通过忽略异常、重试操作或回滚整个事务来处理异常。事务提交时,所有操作都已完成。事务回滚时,所有成功的操作都取消。

事务的作用范围始终为一个会话。也就是说,可以将在单个会话上下文中执行的一个或多个生成方或使用方操作组成一个事务。由于事务只能跨越单个会话,因此不存在既包括消息生成又包括消息使用的端对端事务。

JMS 规范还支持分布式事务。也就是说,消息的生成和使用可以是大型分布式事务的一部分,该事务中包括涉及其他资源管理器(如数据库系统)的操作。必须有事务管理器(例如,Java Systems Application Server 提供的事务管理器)才能支持分布式事务。

在分布式事务中,分布式事务管理器使用在 Java 事务 API (Java Transaction API, JTA) XA 资源 API 规范中定义的两阶段提交协议,来跟踪和管理由多个资源管理器(如消息服务和数据库管理器)执行的操作。在 Java 领域中,资源管理器和分布式事务管理器之间的交互在 JTA 规范中进行了说明。

支持分布式事务是指消息传送客户端可通过 JTA 定义的 XAResource 接口参与分布式事务。此接口定义了实现两阶段提交的许多方法。当客户端进行 API 调用时,JMS 消息服务只与分布式事务管理器(由 Java 事务服务 (Java Transaction Service, JTS) 提供)协作来跟踪分布式事务中的各种发送和接收操作、跟踪事务状态并完成消息传送操作。与本地事务一样,客户端可以通过忽略异常、重试操作或回滚整个分布式事务来处理异常。


注 –

仅当 Message Queue 用作 Java Enterprise Edition 平台中的 JMS 提供者时,Message Queue 才支持分布式事务。有关如何使用分布式事务的其他信息,请参考应用服务器提供者提供的文档。