首页 > 解决方案 > Artemis MQ 发送方如何获得接收确认

问题描述

您好,发件人 A 是否有可能将生存时间为 30 秒的消息放入队列中。并得到一个:

如果没有在业务逻辑中实现,是否有任何可能性?

使用的编程语言:java 首选协议:jms

标签: jmsactivemq-artemis

解决方案


这个问题有点模棱两可。

如果“发件人”是指实际的javax.jms.MessageProducer, javax.jms.QueueSenderjavax.jms.TopicPublisher则答案是否定的。在 JMS(以及大多数其他异步消息传递系统中)中,消费者和生产者在逻辑上是分离的。换句话说,生产者不知道(通常也不关心)消费者在做什么。因此,如果消费者获得/处理了它发送的消息,JMS 生产者无法自动获得 ACK 通知,或者如果消息的 TTL 在被消费之前已过,则无法获得 NACK。

但是,如果“发件人”只是指发送应用程序,那么答案就更有希望了。配置好NotificationActiveMQServerPlugin后,您可以通过管理通知地址(类似于 Tibco 的$sys.monitor主题)获取过期通知。NotificationActiveMQServerPlugin 不支持确认通知,但您可以轻松扩展插件以支持它们,因为插件体系结构中已经有挂钩来捕获消息确认。


推荐阅读