2

如果我使用确认(model.ConfirmSelect)AKA basic.ack 和强制标志发布。如果消息未传递,我是否总是在 basic.ack 事件之前获得 basic.return 事件。

我想将所有 basic.return 消息添加到 ConcurrentDictionary 并在发布后检查消息是否在字典中我会抛出异常,即不存在队列/路由,并在错误或成功时将其删除。

4

1 回答 1

2

是的,您将始终按该顺序接收事件。

文档

什么时候确认消息?

对于不可路由的消息,一旦交换验证消息不会路由到任何队列(返回队列的空列表),代理将发出确认。如果消息也是强制发布的,则 basic.return 在 basic.ack 之前发送给客户端。否定确认 (basic.nack) 也是如此。

于 2016-03-16T23:28:19.043 回答