【问题标题】:RabbitMQ How can a publisher know if a message was recieved by the brokerRabbitMQ 发布者如何知道代理是否收到了消息
【发布时间】:2018-08-22 21:15:38
【问题描述】:

我正在使用 Java 中的 RabbitMQ。我想发布多条消息,知道经纪人是否收到。请注意,我不想知道消息是否被确认。我发现的示例似乎依赖于客户端发送 basicAck 或 Nack。

ch.setConfirmListener(new ConfirmListener() {
    public void handleAck(long seqNo, boolean multiple) {
        if (multiple) {
            unconfirmedSet.headSet(seqNo+1).clear();
        } else {
            unconfirmedSet.remove(seqNo);
        }
    }
    public void handleNack(long seqNo, boolean multiple) {
        // handle the lost messages somehow
    }
});

我只想知道消息是否在作为发布者的代理中收到,在 basicPublish 之后。

【问题讨论】:

    标签: rabbitmq broker


    【解决方案1】:

    您正在寻找publisher confirms

    您引用的 ACK 的用法是针对消费者的,因为 RabbitMQ 要求在将消息从队列中删除之前先确认消息。

    请注意,收到已发布消息的确认消息并不意味着该消息已存储在队列中:该消息可能是“不可路由的”,在这种情况下,确认消息会立即发送给发布者,但消息丢弃。见:When will messages be confirmed

    如果您还想跟踪无法路由的消息,则必须使用Alternate Exchanges

    【讨论】:

      猜你喜欢
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      • 2016-11-24
      • 1970-01-01
      • 1970-01-01
      • 2020-04-03
      相关资源
      最近更新 更多