activemq的高级特性:消息的可靠性

本文详细介绍了消息队列中消息的可靠性保障机制,包括生产者可靠性和消费者可靠性两个方面。对于生产者的可靠性,讨论了使用队列(queue)模式时消息的自动持久化机制及其可靠性保证,同时介绍了使用主题(topic)模式时如何通过配置实现消息持久化以避免消息丢失。对于消费者的可靠性,则分析了几种不同的消息确认方式,如自动确认(AUTO_ACKNOWLEDGE)、客户端手动确认(CLIENT_ACKNOWLEDGE)、批量自动确认(DUPS_OK_ACKNOWLEDGE)以及事务支持(SESSION_TRANSACTED),并解释了它们的工作原理及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

高级特性之消息的可靠性

  可靠性分为:生产者、消费者。生产者必须让mq收到消息,消费者必须能够接收到消息并且消费成功,这就是消息的可靠性。

1:生产者可靠性

  Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

  Session.AUTO_ACKNOWLEDGE是mq自动应答,当生产者往mq发送消息的时候,当模式为queue,

  消息会自动的持久化,然后持久化之后就会通知发送者持久化成功,所以使用queue这种自动应答模式消息是可靠的。

  如果使用topic模式,默认情况下会导致消息丢失,所以该模式下要使用消息的持久化机制。

  

  如果消息要使用全部陈宫或者全部失败的话,这时候就要使用到mq事务。

  Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);    //设置为true 开启事务

  session.commit;    //事务的提交或者回滚(rollback)

 

  可靠性:要不就是消息的持久化或者是消息的事务。

2:消费者可靠性

  消费者能否收到消息,消费者能不能消费成功

  Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

  AUTO_ACKNOWLEDGE    //自动确认,收到消息以后,自动应答并且消费成功了。 如果有异常不会自动应答,并且会重发6次

 CLIENT_ACKNOWLEDGE    //客户端手动确认,message.acknowledge()手动确认。如果没有确定,服务停掉以后,就会自动发送给其他的消费者
 DUPS_OK_ACKNOWLEDGE  //批量自动确认,在内部根据某个算法,在接受一定数量的时候在一次性确认。
 SESSION_TRANSACTED     //createSession设置额为true的时候,就开启事务。一批消息,session.commit()自动提交。

 
 

 

转载于:https://www.cnblogs.com/orange-time/p/10643298.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值