Rabbitmq 使用EasyNetQ排队确认

Rabbitmq 使用EasyNetQ排队确认,rabbitmq,easynetq,Rabbitmq,Easynetq,我希望接收异步确认消息实际上已被放入队列中。我已经搜索了很多,并尝试了各种使用EasyNetQ的PublishAsync进行确认的方法,但似乎找不到能给我这样确认的总线连接配置和代码组合 也许PublishAsync不是实现这一点的方法,我忽略了EasyNetqAPI中的其他内容?其他任何人都有使用EasyNetQ实现此场景的经验吗?要获得这种保证,您需要打开publisher-confirms。请参阅文档: 官方声明 对于无法发送的消息,一旦exchange验证消息不会路由到任何队列,代理将发

我希望接收异步确认消息实际上已被放入队列中。我已经搜索了很多,并尝试了各种使用EasyNetQ的
PublishAsync
进行确认的方法,但似乎找不到能给我这样确认的
总线
连接配置和代码组合


也许
PublishAsync
不是实现这一点的方法,我忽略了EasyNetqAPI中的其他内容?其他任何人都有使用EasyNetQ实现此场景的经验吗?

要获得这种保证,您需要打开publisher-confirms。请参阅文档:

官方声明

对于无法发送的消息,一旦exchange验证消息不会路由到任何队列,代理将发出确认消息(返回队列的空列表)

这意味着您将获得发布确认,即使没有使用匹配的路由密钥绑定到exchange的队列。如果要确保消息至少发布到一个队列,则需要确保在
BasicPublish

channel.BasicPublish(
    exchange: "my_exchange",
    routingKey:"routingkey",
    mandatory: true, // at least one queue
    basicProperties: null,
    body: new byte[0]
);

未提供强制时的默认值为
false
。所以Mike Hadlow的答案不是100%准确。关于这一点,下一个版本中会有一个详细的说明。

Publish Confirms(发布确认)是不够的——确认只是来自代理的确认。执行发布时,您需要将
强制
设置为
。链接需要更新为