JMS AUTO_ACKNOWLEDGE何时被确认?

我试图谷歌这个,但没有成功。 如果我正在使用AUTO_ACKNOWLEDGE ,并且我有一个用Java编写的消费者客户端,那么消息何时被确认? 我正在使用一个包含onMessage方法的MessageListener 。 是否在onMessage之前或onMessage完成之后或在某个其他时刻将确认发送回服务器? 提前感谢任何人都能提供的帮助!

请检查一下。

使用AUTO_ACKNOWLEDGE模式,确认总是在onMessage()处理程序返回后隐式发生的事情。 通过在使用会话上指定CLIENT_ACKNOWLEDGE模式,接收消息的客户端可以对保证消息的传递进行更细粒度的控制。

CLIENT_ACKNOWLEDGE的使用允许应用程序控制何时发送确认。 例如,应用程序可以确认消息 – 从而减轻JMS提供者的职责 – 并执行对消息所代表的数据的进一步处理。 关键是Message对象上的acknowledge()方法,如清单1所示。

acknowledge()方法通知JMS提供者消息已成功接收消息。 如果在确认过程中发生提供程序故障,则此方法会向客户端抛出exception。 提供程序失败导致JMS服务器保留消息以进行重新传递。

CLIENT_ACKNOWLEDGE
使用此确认模式,客户端通过调用消息的确认方法来确认消耗的消息。

 Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE); ... msg = (TextMessage) consumer.receive(); //acknowledge msg.acknowledge(); 

AUTO_ACKNOWLEDGE
使用此确认模式,会话自动确认客户端收到消息时,或者当会话已成功从接收调用返回时,或者会话已调用以处理消息成功返回的消息侦听器。

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

资源
最好的例子