如何使用RabbitMq处理失败的发布?

如何使用RabbitMq处理失败的发布?,rabbitmq,message-queue,easynetq,Rabbitmq,Message Queue,Easynetq,我们计划将RabbitMq用于消息传递服务,我们将把所有消息请求发布到RabbitMq持久队列 对于.Net客户端,我们决定使用EasyNetQ,所以问题是在发布消息时,我们应该如何处理RabbitMq服务器的状态 我们是否应该捕获异常并将消息保存到数据库和 是否使用计划作业重新发布 我们应该使用断路器吗 或者别的什么?我想听听你的经历 通常,如果您想确定发布内容,可以使用 正如您所看到的,您可以使用事务或ConfirmListener来实现这一点 要处理代理失败,您可以在本地存储失败的消息,

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

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

  • 我们是否应该捕获异常并将消息保存到数据库和 是否使用计划作业重新发布
  • 我们应该使用断路器吗
  • 或者别的什么?我想听听你的经历

通常,如果您想确定发布内容,可以使用

正如您所看到的,您可以使用事务或ConfirmListener来实现这一点

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

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