`
liyixing1
  • 浏览: 957179 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

jms-事物

    博客分类:
  • jms
阅读更多
JMSRedelivered可以检查消息是否被重新发送。

消息确认,通过message.acknowledge();此方法只能在CLIENT_ACKNOWLEDGE模式使用。

该方法的调用,会造成对之前所有的未确定的消息的确定。
另外也可以调用session的recover()方法,来强制要求JMS server重新发送之前未确定的消息。onMessage的运行失败,如抛出异常,也会造成JMS对之前未确定的消息的重新发送。

对于消息组而言,为了防止在点对点模式中,一个组的消息被不同的消费者分别接收,那么可以通过设置
msg.setStringProperty("JMSXGroupID", "GROUP1");

JMSXGroupID属性是JMS标准定义的。它是用来保证,相同的JMSXGroupID的消息被相同的消费者使用。JMS会根据系统已经分配过的消费者的GROUPID来对比,如果存在那么消息就发送给这个消费者,如果不存在,JMS会从消费者中选取一位,并为这位消费者分配该ID。
还有一个int的JMSXGroupSeq属性,是支持消息在组的序列号。这个消息是可选的。

事物是有jmsserver提供的,而不是JTA。
JMS事物包括了发送者的事物和接收者的事物。


事物的使用
TopicSession session =
connect.createTopicSession(true, Session.AUTO_ACKNOWLEDGE);
第一个参数true要开启事物。

session三个方法
session.rollback()
session.commit()
session.getTransacted()这个方法获取boolean,来确实是否session开启了事物。


连接丢失,JMS是经量自动进行重连,如果无法完成重新连接,会通知客户端。客户端通过接口
public interface ExceptionListener {
void onException(JMSException exception);
}
来监听该通知。
该通知有两种情况
1.JMS服务器重新完成了连接,那么不需发送通知
2.没有完成连接,那么JMS客户端运行时,会产生该通知。

收到该通知后,jms客户端其实可以进行重新连接操作

停用消息队列
Dead Message Queue (DMQ),非JMS标准定义,很多厂商自己实现。DMQ的空间有限,在选择JMS中间件的时候,需要了解该中间件是否支持DMQ,如果支持,就需要编写部分处理DMQ的代码,来防止DMQ空间被填满。
分享到:
评论

相关推荐

    JMS 规范(英文)

    2. **事务管理**:JMS支持本地事务和全局事务,允许开发者根据业务需求选择合适的事物管理策略,确保消息的可靠性和一致性。 3. **持久化**:JMS提供了持久化选项,即使在消息服务器重启后,未确认的消息仍然可以被...

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

    介绍了Spring的事务机制、事物抽象、内部事务和外部事物,以及常用的几种事务管理的实现,包括DataSource、JPA、JMS、JTA都通过实例进行说明。还有XA以及两阶段提交,并通过实例演示了使用JTA,通过两阶段提交,实现...

    (事物学习笔记二) 对Java事物的理解

    本文将深入探讨“事物学习笔记二”中关于Java事务的理解,旨在帮助读者更好地掌握这一关键概念。 首先,事务(Transaction)是数据库操作的基本单位,它确保一组数据库操作要么全部成功,要么全部失败,从而保证...

    atomikos 事物管理器

    在Java应用程序中,特别是在企业级应用服务(EJBs)、JMS、JTA以及Spring框架中,Atomikos事务管理器扮演着至关重要的角色。它实现了Java Transaction API (JTA),允许开发者在多资源、多数据库的环境中进行复杂的...

    对Hibernate事物的理解

    在分布式环境中,Hibernate可以使用JTA进行全局事务管理,允许跨多个资源(如数据库、JMS队列等)的事务协调。 ### 7. Spring与Hibernate事务整合 Spring提供了一套强大的事务管理机制,可以与Hibernate无缝集成,...

    Atomikos解决JTA事物用法实战

    它支持多种数据源,如JDBC数据库、JMS消息队列、甚至是NoSQL存储,能够确保跨这些系统的操作要么全部成功,要么全部回滚,遵循ACID(原子性、一致性、隔离性和持久性)原则。 实战Atomikos的JTA事务,首先需要在...

    最新系统分析师考试复习资料

    - **事物表示法**:结构事物、行为事物、分组事物、注释事物。 - **图形**:类图、用例图、顺序图等。 - **公共机制**:规格说明、命名、可见性、一致性。 - **USECASE**:描述系统的行为。 - **对象类图**:...

    JAVA笔试题汇总(1-30)

    它基于Java语言实现,利用JNDI、JTA、JMS等技术提供分布式计算环境下的服务。 - **SessionBean与EntityBean的区别**: - **SessionBean**:用于管理业务逻辑,分为有状态(Stateful Session Bean)和无状态(Stateless...

    TeamWork-JLU_info_sys:五个同性恋者共同努力,创造出伟大的事物

    JAVA EE技术jsp Javabean 小服务程序JNDI :使用配置文件配置数据库方便使用的规范JPA :用于定义和数据库交互的类的规范-Hibernate框架-​​SpringData jpa(springboot模块) JMS :用于异步通信的规范(适用于c /...

    java面试题

    - **定义**:抽象是指在编程中通过提取事物的本质属性和行为,忽略非本质细节的过程。 - **目的**:专注于核心功能,简化复杂度。 - **应用**:通过接口或抽象类实现。 **2. 继承** - **定义**:继承是一种让一个...

    spring 架包

    - **JMS (Java Message Service)**: 支持消息驱动的bean,允许异步通信和解耦。 **7. ** **测试** **(Testing)** - 提供了测试支持类,如Mockito集成,使得单元测试和集成测试变得更加简单。 **8. ** **事物管理...

    java程序员的标准

    - **定义**: 面向对象分析与设计是基于面向对象编程的一种系统开发方法论,其目的是通过对象来抽象和模拟现实世界中的事物,进而解决实际问题。 - **涉及模式**: - **GOF(Gamma, Helm, Johnson, Vlissides)**:这...

    程序员面试之葵花宝典

    - 抽象是面向对象编程中的一个重要概念,它指的是从现实世界的事物中提取出共同的、本质的特性,而忽略非本质的、无关的细节。在软件开发中,抽象有助于简化复杂度,使开发者能够专注于解决具体问题而不是陷入细节...

    系统分析师考试复习资料

    - **事物表示法**:结构事物、行为事物等。 - **基本联系**:关联、泛化、依赖等。 - **图形**:类图、序列图、活动图等。 **3.3 OMT方法** OMT(Object Modeling Technique)是一种面向对象的建模方法,主要包括...

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

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

Global site tag (gtag.js) - Google Analytics