java - JMS AUTO_ACKNOWLEDGE 何时确认?

标签 java jms messaging

我试过用谷歌搜索,但没有成功。如果我正在使用 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/

相关文章:

messaging - Akka actor可以将其传出邮件存储在持久邮箱中吗?

java - 无法在 Spring Boot 中查看缓存指标(命中/未命中/大小)?

Java调用同一父类的子构造函数

java - Java 泛型字段类型不能像泛型方法类型那样具体吗?

java - JMS onMessage JBoss,使用了多少个线程?

java - 从 JMS MessageListener 发出回滚信号

java - 作业在启动应用程序期间执行

grails - Grails和ActiveMQ:如何管理DefaultMessageListenerContainer的连接

java - 我可以使用多个发布者和单个接收者保留 OpenMQ 上的消息顺序吗?

java - 除了具有 OpenEJB 的 ActiveMQ JMS 提供程序之外 - 可能是外部的