Artemis MQ发件人如何获得接收确认
Artemis MQ how can sender get reception acknowledge
您好,发件人 A 是否有可能将一条生存时间为 30 秒的消息放入队列中。
并获得:
- ACK 通知如果接收方 B got/processed 消息
- 如果在接收方 B 收到消息之前达到 ttl,则 NACK
如果不在业务逻辑中实现,是否有可能?
使用的编程语言:java
首选协议:jms
这个问题有点模棱两可。
如果 "sender" 是指实际的 javax.jms.MessageProducer
、javax.jms.QueueSender
或 javax.jms.TopicPublisher
,那么答案是否定的。在 JMS(以及大多数其他异步消息系统)中,消费者和生产者在逻辑上是分离的。换句话说,生产者不知道(通常也不关心)消费者在做什么。因此,如果消费者 got/processed 它发送的消息,JMS 生产者无法自动获得 ACK 通知,或者如果消息的 TTL 在被消费前已过,则 JMS 生产者无法自动获得 NACK。
但是,如果"sender"只是指发送申请那么答案就更有希望了。您可以通过 management notification address (which is similar to Tibco's $sys.monitor
topic) once you have configured the NotificationActiveMQServerPlugin 获取到期通知。 NotificationActiveMQServerPlugin 不支持确认通知,但您可以轻松扩展插件以支持它们,因为插件架构中已经有钩子来捕获消息确认。
您好,发件人 A 是否有可能将一条生存时间为 30 秒的消息放入队列中。 并获得:
- ACK 通知如果接收方 B got/processed 消息
- 如果在接收方 B 收到消息之前达到 ttl,则 NACK
如果不在业务逻辑中实现,是否有可能?
使用的编程语言:java 首选协议:jms
这个问题有点模棱两可。
如果 "sender" 是指实际的 javax.jms.MessageProducer
、javax.jms.QueueSender
或 javax.jms.TopicPublisher
,那么答案是否定的。在 JMS(以及大多数其他异步消息系统)中,消费者和生产者在逻辑上是分离的。换句话说,生产者不知道(通常也不关心)消费者在做什么。因此,如果消费者 got/processed 它发送的消息,JMS 生产者无法自动获得 ACK 通知,或者如果消息的 TTL 在被消费前已过,则 JMS 生产者无法自动获得 NACK。
但是,如果"sender"只是指发送申请那么答案就更有希望了。您可以通过 management notification address (which is similar to Tibco's $sys.monitor
topic) once you have configured the NotificationActiveMQServerPlugin 获取到期通知。 NotificationActiveMQServerPlugin 不支持确认通知,但您可以轻松扩展插件以支持它们,因为插件架构中已经有钩子来捕获消息确认。