190705-ActiveMQ消息确认机制

ActiveMQ消息确认机制

消息的确认指的是接收消息的时候发生的工作,发送消息不存在确认;消息只有在被确认之后,才认为已经被成功消费,然后消息才会从队列或主题中删除。

ack_stage

  1. 客户接收消息
  2. 客户处理消息
  3. 消息被确认

JMS消息只有在被确认之后,才认为已经被成功的消费了。消息的成功消费通常包含三个阶段:客户接收消息,客户处理消息和消息被确认。在事务性会话中,当一个事务被提交的时候,确认自动发生。在非事务性会话中,消息何时被确认取决于创建会话时的应答模式(acknowledgement mode)

描述
Session.AUTO_ACKNOWLEDGE 客户(消费者)成功从receive方法返回时,或者从MessageListener.onMessage方法成功返回时,会话自动确认消息。
Session.CLIENT_ACKNOWLEDGE 客户通过显式调用消息的acknowledge方法确认消息。注意:这个确认机制和事务消息有重叠,不管是哪种确认机制,只要是事务消息,那么一旦事务提交,都会进行确认,所以需要如果客户端确认,需要改为非事务消息。
Session.SESSION_TRANSACTED 事务提交并确认。 配合事务消息的;

我们所介绍的消息接收确认机制,一律以接收者为准,与发送者没有关系。
注意:消息确认机制与事务机制是冲突的,只能选其中一种,所以演示消息确认前,先关闭事务。

参考资料

  1. ActiveMQ的消息事务和消息的确认机制
  2. ActiveMQ事务、异步发送、消息确认概念
  3. session.close与session.commit的区别
  4. ActiveMQ中消息的事务和消息的确认机制
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×