【发布时间】:2019-08-13 21:57:49
【问题描述】:
您好,发件人 A 是否有可能将生存时间为 30 秒的消息放入队列中。 并得到一个:
- 如果接收者 B 获得/处理了 msg,则发出 ACK 通知
- 如果在接收器 B 收到消息之前到达 ttl,则 NACK
如果没有在业务逻辑中实现,是否有任何可能?
使用的编程语言:java 首选协议:jms
【问题讨论】:
标签: jms activemq-artemis
您好,发件人 A 是否有可能将生存时间为 30 秒的消息放入队列中。 并得到一个:
如果没有在业务逻辑中实现,是否有任何可能?
使用的编程语言:java 首选协议:jms
【问题讨论】:
标签: jms activemq-artemis
这个问题有点模棱两可。
如果“发件人”是指实际的javax.jms.MessageProducer、javax.jms.QueueSender 或javax.jms.TopicPublisher,那么答案是否定的。在 JMS(以及大多数其他异步消息传递系统中)中,消费者和生产者在逻辑上是分离的。换句话说,生产者不知道(通常也不关心)消费者在做什么。因此,如果消费者获取/处理了它发送的消息,JMS 生产者无法自动获取 ACK 通知,或者如果消息的 TTL 在被消费之前已过,则 JMS 生产者无法自动获取 NACK。
但是,如果“发送者”只是指发送者应用程序,那么答案就更有希望了。配置NotificationActiveMQServerPlugin 后,您可以通过management notification 地址(类似于Tibco 的$sys.monitor 主题)获取到期通知。 NotificationActiveMQServerPlugin 不支持确认通知,但您可以轻松扩展插件以支持它们,因为插件架构中已经有挂钩来捕获消息确认。
【讨论】: