1

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

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

  • 我们是否应该捕获异常并将消息保存到数据库并使用预定作业重新发布?
  • 我们应该使用断路器吗?
  • 还是什么?我想听听你的经历。
4

1 回答 1

3

一般来说,如果您想确定发布,您可以使用发布确认

正如您所读到的,您可以使用事务或使用 ConfirmListener 来做到这一点。

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

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

于 2016-12-19T14:24:32.130 回答