我试过用谷歌搜索,但没有成功。如果我正在使用 AUTO_ACKNOWLEDGE
,并且我有一个用 Java 编写的消费者客户端,那么消息何时被确认?我正在使用包含 onMessage
方法的 MessageListener
。确认是在 onMessage
之前还是在 onMessage
完成之后或在其他某个时间点发送回服务器?提前感谢任何人能够提供的任何帮助!
最佳答案
请查看 one (用作文章的 Wayback Machine 链接自 2020 年起下线)
使用 AUTO_ACKNOWLEDGE
模式,确认总是在 onMessage()
处理程序返回后隐式发生的最后一件事。接收消息的客户端可以通过在消费 session 上指定 CLIENT_ACKNOWLEDGE
模式来对保证消息的传递进行更细粒度的控制。
CLIENT_ACKNOWLEDGE
的使用允许应用程序控制何时发送确认。例如,应用程序可以确认消息 - 从而减轻 JMS 提供者的职责 - 并进一步处理由消息表示的数据。关键是 Message 对象上的 acknowledge() 方法,如 list 1 所示。
acknowledge()
方法通知 JMS 提供者消息已被消费者成功接收。如果在确认过程中发生提供程序故障,此方法将向客户端抛出异常。提供程序失败会导致 JMS 服务器保留消息以进行重新传递。
关于java - JMS AUTO_ACKNOWLEDGE 何时确认?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11673361/