JMS的可靠性机制及事务性会话

JMS的可靠性机制

JMS消息之后被确认后,才会认为是被成功消费。消息的消费包含三个阶段: 客户端接收消息、客户端处理消息、消息被确认

事务性会话


 设置为true的时候,消息会在session.commit以后自动签收

非事务性会话

在该模式下,消息何时被确认取决于创建会话时的应答模式

AUTO_ACKNOWLEDGE

当客户端成功从recive方法返回以后,或者[MessageListener.onMessage] 方法成功返回以后,会话会自动确认该消息

CLIENT_ACKNOWLEDGE

客户端通过调用消息的textMessage.acknowledge();确认消息。

在这种模式中,如果一个消息消费者消费一共是10个消息,那么消费了5个消息,然后在第5个消息通过textMessage.acknowledge(),那么之前的所有消息都会被消确认

DUPS_OK_ACKNOWLEDGE

延迟确认

本地事务

在一个JMS客户端,可以使用本地事务来组合消息的发送和接收。JMS Session 接口提供了commit和rollback方法。

JMS Provider会缓存每个生产者当前生产的所有消息,直到commit或者rollback,commit操作将会导致事务中所有的消息被持久存储;rollback意味着JMS Provider将会清除此事务下所有的消息记录。在事务未提交之前,消息是不会被持久化存储的,也不会被消费者消费

事务提交意味着生产的所有消息都被发送。消费的所有消息都被确认;

事务回滚意味着生产的所有消息被销毁,消费的所有消息被恢复,也就是下次仍然能够接收到发送端的消息,除非消息已经过期了

猜你喜欢

转载自blog.csdn.net/qq_34707991/article/details/83894555