客户端成功接收一条消息的标志是这条消息被签收。
成功接收一条消息一般包括如下三个阶段:
1.客户端接收消息;
2.客户端处理消息;
3.消息被签收。
ACKNOWLEDGE:
1.Session.AUTO_ACKNOWLEDGE
当客户端从 receive 或onMessage 成功返回时,Session 自动签收客户端的这
条消息的收条。在AUTO_ACKNOWLEDGE 的Session 中,同步接收receive 是上述三个阶
段的一个例外,在这种情况下,收条和签收紧随在处理消息之后发生。
2.Session.CLIENT_ACKNOWLEDGE
客户端通过调用消息的 acknowledge 方法签收消息。在这种情况下,签收发生。
在Session 层面:签收一个已消费的消息会自动地签收这个Session 所有已消费消息的
收条。
3.Session.DUPS_OK_ACKNOWLEDGE
此选项指示 Session 不必确保对传送消息的签收。它可能引起消息的重复,但
是降低了Session 的开销,所以只有客户端能容忍重复的消息,才可使用(如果Activ
eMQ 再次传送同一消息,那么消息头中的JMSRedelivered 将被设置为true)。
对队列来说,如果当一个Session 终止时它接收了消息但是没有签收,那么Activ
eMQ 将保留这些消息并将再次传送给下一个进入队列的消费者。
对主题来说,如果持久订阅用户终止时,它已消费未签收的消息也将被保留,直到
再次传送给这个用户。对于非持久订阅,AtiveMQ 在用户Session 关闭时将删除这些消
息。
ActiveMQ 支持两种消息传送模式:PERSISTENT 和NON_PERSISTENT 两种。
1.PERSISTENT(持久性消息)
这是 ActiveMQ 的默认传送模式,此模式保证这些消息只被传送一次和成
功使用一次。对于这些消息,可靠性是优先考虑的因素。可靠性的另一个重要方面是确
保持久性消息传送至目标后,消息服务在向消费者传送它们之前不会丢失这些消息。这
意味着在持久性消息传送至目标时,消息服务将其放入持久性数据存储。如果消息服务
由于某种原因导致失败,它可以恢复此消息并将此消息传送至相应的消费者。虽然这样
增加了消息传送的开销,但却增加了可靠性。
2.NON_PERSISTENT(非持久性消息)
保证这些消息最多被传送一次。对于这些消息,可靠性并非主要的考虑因素。
此模式并不要求持久性的数据存储,也不保证消息服务由于某种原因导致失败后消息不
会丢失。
分享到:
相关推荐
在Spring中配置JMS事务,我们需要在`ConnectionFactory`中开启事务支持,然后在`MessageListener`上声明事务。例如,我们可以使用`JmsTemplate`的`setSessionTransacted(true)`方法开启事务,或者在`...
6. **事务处理**: JMS支持两种类型的事务:JMS事务和X/Open分布式事务处理(X/Open DTP)。JMS事务适用于单个JMS提供者的环境,而X/Open DTP则用于跨多个JMS提供者的事务一致性。 7. **持久化与非持久化消息**: JMS...
4. 事务支持:JMS 1.1提供了两种事务类型——JMS事务和X/Open分布式事务(XA),确保消息的一致性。 5. 安全性:通过认证和授权机制,保护消息的安全性。 三、JMS 1.1的应用实践 1. 分布式系统通信:JMS常用于...
5. **JMS事务管理**: - **Session事务**:在一个Session中进行的一组操作,要么全部成功,要么全部失败。 - **X/Open XA事务**:支持跨多个资源的分布式事务。 6. **持久性**: - 消息可以被持久化存储,即使...
总的来说,Atomikos Transactions JMS 是Java开发者在处理JMS事务时的强大工具,它提供了一套完整的解决方案来处理分布式环境中的复杂事务问题。通过理解和有效地使用这个库,可以构建出更加健壮和可靠的分布式应用...
SpringJMS提供了事务支持,可以在发送或接收消息时启用JMS事务,确保消息传递的可靠性。 9. **错误处理和异常传播** SpringJMS允许开发者捕获和处理JMS异常,例如消息无法发送或接收时,可以通过Spring的异常处理...
JMS事务仅限于单个JMS会话,而X/Open XA事务可以跨多个资源(如数据库和JMS队列)进行协调。 ### 6. JMS持久性 JMS提供持久化消息功能,即使在消息服务器重启后,也能保证消息不会丢失。这对于高可用性和灾难恢复...
五、JMS事务与持久性 1. 事务(Transaction):JMS支持事务,确保消息的原子性和一致性。 2. 持久化:消息代理可将消息存储在磁盘上,即使服务器重启也不会丢失。 六、JMS的应用场景 1. 异步处理:将耗时操作从主线...
通过`PlatformTransactionManager`接口,可以配置JMS事务与Spring的其他事务管理器协同工作。 4. **消息转换**:Spring还提供了`MessageConverter`接口,用于在消息对象和应用程序对象之间进行转换,这在处理不同...
5. **事务管理**:Spring提供了集成JMS事务的能力,可以在发送消息时开启事务,确保消息的原子性和一致性。 6. **测试与运行**:项目中的“完整可运行”意味着包含了运行所需的全部资源,包括配置文件、源代码、...
消息可以在本地JMS事务或与JDBC等其他资源一起参与的全局事务中发送。 7. **连接工厂**:连接工厂是JMS提供的一种机制,用于创建与消息服务器的连接。它们是JMS提供者的一部分,负责配置和管理与消息服务器的连接。...
9. **事务(Transactions)**: JMS支持两种类型的事务:JMS事务和X/Open分布式事务处理(XATransaction)。JMS事务适用于单个JMS提供者的操作,而X/Open XA事务则允许跨多个资源的分布式事务管理。 `javax.jms....
1. **更好的事务管理**:Spring支持JMS事务和XAS事务,确保消息的可靠传递。在分布式环境中,可以通过JTA来协调跨多个资源的事务。 2. **高级消息选择器**:允许开发者根据消息头和属性进行更复杂的筛选,只处理符合...
Spring集成JMS是Java消息服务(Java Message ...同时,如果使用MySQL作为持久化存储,Spring还提供了与JMS事务集成的能力,确保消息的原子性和一致性。 在实际应用中,`SpringJMS`可能包含以下示例代码片段: ```xml ...
JMS事务只管理消息传递,而XAResource事务则可以协调JMS和其他资源(如数据库)的事务。 10. **高级特性**:JMS还提供了消息持久化、消息选择器、事务消息、消息确认模式等高级功能,可以根据应用需求灵活使用。 ...
4-4 Jms事务原理 4-5 Jms-session事务实例 4-6 Jms-spring事务实例 4-7 外部事务与JTA 4-8 JTA单数据源事务实例 4-9 JTA多数据源事务实例 第5章 分布式系统 介绍了分布式系统的定义、实现原则和几种形式,详细介绍...
在实际开发中,WebLogic还提供了高级特性,如JMS事务、消息分发策略、消息选择器、持久订阅等。这些特性可以帮助开发者构建复杂的消息处理逻辑,实现高并发和可靠的数据交换。 在进行WebLogic JMS配置时,需注意...
Spring允许在发送或接收消息时启用JMS事务,确保消息传递的可靠性。此外,通过设置消息属性,还可以控制消息是否持久化存储,即使服务器重启也能保证不丢失。 6. **异常处理与回退策略** 在Spring中,可以通过...
5. **事务支持**:JMS事务确保消息的一致性和准确性,ActiveMQ支持本地和分布式事务。 6. **网络连通性**:ActiveMQ可以通过网络连接多个服务器,形成一个消息网络,提供更灵活的部署和扩展方案。 7. **管理工具**...