`
hzy0769
  • 浏览: 45942 次
  • 性别: Icon_minigender_1
  • 来自: 东莞
社区版块
存档分类
最新评论

JTA分布式事务之JMS篇

阅读更多

 前言

我在上篇文章《【消息队列】ActiveMQSpring集成》讲解如何用spring编写一个简单的发送消息然后接收的JMS应用,不过例子中为了简单并没有使用事务,本文主要讲下如何增加事务的控制。在JMS中有两种事务控制方式:本地事务和JTA事务。由于实际的业务很少完全脱离数据库的使用,经常需要在一个事务中同时操作数据库和JMS,所以一般会使用JTA事务控制(分布式事务),本文就只讲JTA的事务配置。

关于JTA事务如何配置我在文章《JTA分布式事务实践》已经有了较详细的讲解,但是文章只使用了数据库,本文将在此基础上增加JMS的配置部分。

本文的讲解使用的是第三方独立JTA组件atomikos。如果是使用容器提供的JTA,那么配置其实更简单,通常这种J2EE服务器会同时提供JMSJTA支持(例如jbosswebsphere),项目中只需通过JNDI获取就行,不过这种情况项目与应用服务器的绑定在一起了,我更喜欢用轻量化的设计,所以JMSJTA都使用第三方独立组件。

 

开始

更改为XAConnectionFactory

JTA事务需要使用XA协议,所以改用XAConnectionFactory,如下

 

<!—ActiveMQ提供了一个XAConnectionFactory来支持JTA事务--> 

<bean id="amqXaConnectionFactory" class="org.apache.activemq.ActiveMQXAConnectionFactory">

        <property name="brokerURL" value="tcp://localhost:61616" />

</bean>

 

使用atomikosConnectionFactory实现JTA事务

由于使用的是第三方独立JTA组件,这儿配置一个atomikosconnectionFactory来使activemqconnectionFactory实现JTA事务支持。

<!-- 使用atomikos支持jta,同时支持connect缓存功能 -->

<bean id="connectionFactory" class="com.atomikos.jms.AtomikosConnectionFactoryBean" init-method="init">

    <property name="uniqueResourceName" value="XAactiveMQ" />

    <property name="xaConnectionFactory" ref="amqXaConnectionFactory"/>

    <property name="poolSize" value="5"/>

</bean>

 

发送事务

配置JmsTemplate支持事务

设置sessionTransactedtrue使JmsTemplate支持发送事务

<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">

    <property name="connectionFactory" ref="connectionFactory"/>

    <property name="sessionTransacted" value="true"/>

</bean>

 

发送事务封装

只需在上回的生产者中加上@Transactional来增加JTA的事务封装就行如下图(关于JTA的事务配置参考之前我发的JTA分布式事务文章)

 

 

接收事务

在上文介绍的监听容器中引入JTA事务管理器,这样接收的消息也被控制在事务中了

 

 

 

 

 

  • 大小: 10.3 KB
  • 大小: 9.9 KB
分享到:
评论

相关推荐

    分布式事务操作之Spring+JTA+mybatis源码

    本话题主要聚焦于如何在Spring框架中结合Java Transaction API (JTA) 和 MyBatis 实现分布式事务管理。下面我们将详细探讨相关知识点。 1. **分布式事务**:在分布式系统中,事务处理跨越多个资源或服务,例如...

    分布式事务实践 解决数据一致性

    介绍分布式事务的定义、原则和实现原则,介绍使用Spring框架实现分布式事务的几种方式,包括使用JTA、Spring事务同步、链式事务等,并通过实战介绍其实现。除此以外还介绍了一些分布式事务相关的技术,如幂等性、...

    分布式事务JTA之实践:Spring+ATOMIKOS

    本篇文章将探讨如何在Java环境中,利用Spring框架和Atomikos这样的第三方工具实现分布式事务管理,即JTA(Java Transaction API)的实践。 JTA是Java平台提供的一种标准API,用于管理跨越多个资源(如数据库、消息...

    龙果学院(微服务架构的分布式事务解决方案)pdf ppt

    ### 微服务架构下的分布式事务解决方案 #### 一、引言 随着互联网技术的发展和企业级应用需求的增长,传统的单体应用已经难以满足高并发、高性能的要求。微服务架构因其高度解耦、易于扩展等特性成为了当前软件开发...

    Atomikos分布式事务处理所需jar包

    Atomikos是一个开源的事务处理系统,专门设计用于在Java应用程序中实现分布式事务管理。它提供了JTA(Java Transaction API)的实现,使得开发者能够在不同的数据源之间进行复杂的事务操作,确保数据的一致性和完整...

    Spring3.0+Hibernate+Atomikos多数据源分布式事务管理

    因此,多数据源分布式事务管理成为了必不可少的技术。本教程将聚焦于如何利用Spring 3.0、Hibernate ORM框架以及Atomikos这个开源事务管理器来实现高效、可靠的多数据源分布式事务处理。 **Spring 3.0**: Spring是...

    spring mybatis atomikos 多库分布式事务demo

    Atomikos是Java环境下的一款强大的事务处理工具,支持JTA(Java Transaction API),能处理复杂的分布式事务需求。在Spring中整合Atomikos,可以实现全局的事务管理,即使跨越多个数据库,也能确保ACID(原子性、...

    Atomikos分布式事务处理所需jar包 4.0.4版本

    2. **transactions-jta-4.0.4.jar**:此jar包包含了Java Transaction API (JTA) 的实现,是Java平台用于管理分布式事务的标准API。JTA允许应用程序在不受特定事务管理器限制的情况下进行跨多个数据源的事务处理。 3...

    spring hibernate atomikos 分布式事务

    Atomikos是Java中的一款开源的事务管理器,尤其适用于处理JTA(Java Transaction API)级别的分布式事务。它能够使不同的数据源(如数据库、消息队列等)在同一事务中协同工作,确保数据的一致性。在Spring框架中,...

    atomikos分布式事务提交框架

    Atomikos是一个强大的开源分布式事务处理框架,专为Java企业级应用设计,它提供了一种在分布式环境中确保数据一致性的方式。在大型系统中,尤其是在微服务架构或云环境下的复杂业务场景,分布式事务处理是必不可少的...

    spring+jms+jta事务的消息发送和消息消费

    标题"spring+jms+jta事务的消息发送和消息消费"指的是一种利用Spring框架集成JMS进行消息传递,并通过JTA来管理分布式事务的场景。这样的设计允许应用程序在多组件环境中保证数据的一致性,即使在组件之间存在网络...

    springboot+jta+atomikos

    本项目“springboot+jta+atomikos”旨在利用Spring Boot框架、Java Transaction API (JTA) 和 Atomikos 这一开源事务管理器来实现分布式事务的统一管理。下面将详细阐述这三个关键组件以及它们如何协同工作。 **...

    Java分布式开发spring+jta+jotm

    在Spring中,Java Transaction API (JTA) 和 JOTM(Java Open Transaction Manager)是实现分布式事务管理的关键组件。 **Spring 框架** Spring 是一个开源的Java平台,它提供了一个全面的编程和配置模型,用于现代...

    atomikos-jta-jpa-jms-example:带有 Spring、JPA 和 JMS 的 Atomikos JTA 示例

    JTA 是 Java 平台企业版(Java EE)的一部分,提供了一个标准接口来管理跨多个数据源的分布式事务。Atomikos 作为 JTA 实现,允许开发者在单个事务中跨越多个数据库操作,确保数据的一致性和完整性。 Spring 框架是...

    开源分布式事务管理组件Atomikos

    Atomikos,是一个基于Java的开源事务管理器,提供了事务管理和连接池,不需要应用服务器支持,支持JDBC和JMS事务,能提供对Spring,Hibernate的集成,有兴趣多了解的可以直接参考说明文当,有详细的介绍和使用说明。

    JTA 深度历险 - 原理与实现.pdf

    JTA提供了分布式事务服务,它通过事务管理器(TransactionManager)来协调事务参与单元,并与支持XA协议的资源管理器(ResourceManager)协同工作,实现了对多种数据源的统一事务管理。 XA协议是X/Open组织定义的一...

    JMS详细实例学习教程

    JTS(Java Transaction Service)可以和 JMS 一起组成一个分布式事务,如将发送接收消息和更新数据库包含在一个事务里。 4. JMS 和 JNDI 的关系 JMS 客户端通过 JNDI 调用 JMS 中的对象。AMQ 还可以作为 Apusic ...

    JNDI,JTA和JMS简介

    JTA提供了一种标准的Java编程接口,用于访问事务服务,这些事务服务允许应用程序执行分布式事务处理——跨多个资源管理器(如数据库、消息服务等)的事务处理。在JTA中,事务由事务管理器进行协调,它控制事务的提交...

    atomikos-jta-jdbc-jms-example:带有 Spring、JDBC 和 JMS 的 Atomikos JTA 示例

    总结来说,"atomikos-jta-jdbc-jms-example" 是一个展示如何在 Spring 应用中利用 Atomikos 来管理和协调涉及 JDBC 数据库和 JMS 消息的分布式事务的实例。这个示例有助于开发者理解和实践在 Java 环境下实现高可用...

    jta.jar包;jta.jar包

    Java Transaction API(JTA)是Java平台上的标准接口,用于管理分布式事务处理。jta.jar文件是这个API的实现库,它包含了一系列类和接口,允许应用程序在不同的数据存储系统间进行协调一致的事务操作。在Java应用中...

Global site tag (gtag.js) - Google Analytics