控制消息应答 Controlling Message Acknowledgment
除非JMS消息被应答,否则它不会被认为成功消费掉。 成功的消息消费顺序发生在三个阶段:客户收到消息---》客户处理消息---》消息被应答,消息应答既不是被JMS提供者也不是客户来初始化,而是 依赖于会话应答模式。
会话应答模式
1,在事务化的会话中,应答会在事务提交时自动发生。,,如果事务回滚,所有的消费了的消息会在topic或则queue中恢复,而未被消费。如果是发送消息,则这次发送会被取消。
2,在非事务的会话中,何时,何种方式应答依赖于createSession
方法的第二个参数被指定的值。三个可能的参数值时:
Session.AUTO_ACKNOWLEDGE
:会话自动应答客户收到的消息,客户收到了消息就会自动应答,而不管之后客户对消息的处理会不会出现异常,只保证用户收到了消息,其它的不保证。
Session.CLIENT_ACKNOWLEDGE
: 客户端手动确认应答,客户端通过调用接收到的message的acknowledge()方法来确认消息被正确消费了,否则此消息将任然存在。