如何处理 RabbitMq 发布失败?
How to handle failed publish with RabbitMq?
我们计划将 RabbitMq 用于我们的消息服务,我们会将所有消息请求发布到 RabbitMq 持久队列。
对于.Net 客户端,我们决定使用EasyNetQ,那么问题是在发布消息时我们应该如何处理RabbitMq 服务器?
- 我们是否应该捕获异常并将消息保存到数据库以及
使用预定作业重新发布?
- 我们应该使用断路器吗?
- 或者还有什么?我想听听你的经历。
一般来说,如果您想确定发布的内容,可以使用 publish confirmation。
如您所见,您可以使用交易或 ConfirmListener 来做到这一点。
要处理代理失败,您可以在本地存储失败的消息,然后在 x 秒后尝试重新发送它们。
注意:我不知道EasyNetQ是怎么工作的,但是原生发布是异步的,所以捕获发布异常不是足够。这就是为什么你应该使用发布确认来处理它。
我们计划将 RabbitMq 用于我们的消息服务,我们会将所有消息请求发布到 RabbitMq 持久队列。
对于.Net 客户端,我们决定使用EasyNetQ,那么问题是在发布消息时我们应该如何处理RabbitMq 服务器?
- 我们是否应该捕获异常并将消息保存到数据库以及 使用预定作业重新发布?
- 我们应该使用断路器吗?
- 或者还有什么?我想听听你的经历。
一般来说,如果您想确定发布的内容,可以使用 publish confirmation。
如您所见,您可以使用交易或 ConfirmListener 来做到这一点。
要处理代理失败,您可以在本地存储失败的消息,然后在 x 秒后尝试重新发送它们。
注意:我不知道EasyNetQ是怎么工作的,但是原生发布是异步的,所以捕获发布异常不是足够。这就是为什么你应该使用发布确认来处理它。