如何处理 RabbitMq 发布失败?

How to handle failed publish with RabbitMq?

我们计划将 RabbitMq 用于我们的消息服务,我们会将所有消息请求发布到 RabbitMq 持久队列。

对于.Net 客户端,我们决定使用EasyNetQ,那么问题是在发布消息时我们应该如何处理RabbitMq 服务器?

一般来说,如果您想确定发布的内容,可以使用 publish confirmation

如您所见,您可以使用交易或 ConfirmListener 来做到这一点。

要处理代理失败,您可以在本地存储失败的消息,然后在 x 秒后尝试重新发送它们。

注意:我不知道EasyNetQ是怎么工作的,但是原生发布是异步的,所以捕获发布异常不是足够。这就是为什么你应该使用发布确认来处理它。