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