Rabbitmq 来自错误队列的MassTransit重定向消息

Rabbitmq 来自错误队列的MassTransit重定向消息,rabbitmq,message-queue,masstransit,nservicebus5,Rabbitmq,Message Queue,Masstransit,Nservicebus5,我正在浏览几个使用NServiceBus的示例,我偶然发现了一个功能,我希望它能与MassTransit一起提供,因为这是一项免费服务 该功能基于“中毒”消息 如果由于系统中的错误,无法处理这些消息,并最终永久性地出现在错误队列中 NServiceBus有一个很酷的特性,一旦您纠正了代码中的错误,就允许将错误队列中的消息“重定向”到原始工作队列,并重新传递 这是通过使用NServiceBus特定工具完成的:-ReturnToSourceQueue.exe MassTransit是否有类似的工具处

我正在浏览几个使用NServiceBus的示例,我偶然发现了一个功能,我希望它能与MassTransit一起提供,因为这是一项免费服务

该功能基于“中毒”消息

如果由于系统中的错误,无法处理这些消息,并最终永久性地出现在错误队列中

NServiceBus有一个很酷的特性,一旦您纠正了代码中的错误,就允许将错误队列中的消息“重定向”到原始工作队列,并重新传递

这是通过使用NServiceBus特定工具完成的:-ReturnToSourceQueue.exe

MassTransit是否有类似的工具处理此类问题


或者有没有其他的解决方法,更倾向于使用RabbitMQ。

只需RabbitMQ和一点代码,就可以轻松地重新创建此功能。虽然NServicebus包含它很好,但使用MassTransit构建它应该很容易

注意:我已经有几年没有使用.NET了,所以我对NSB和MT的知识有些生疏。。。这将是高层次的答案,只有,没有代码

首先,要正确配置死信交换和有毒消息队列

一旦您知道某条消息正在导致错误,并且是一条坏消息,您可以拒绝或拒绝该消息,而无需重新查询该消息,以便通过死信交换DLX发送该消息

邮件通过DLX后,您将在邮件上拥有一些附加属性,包括:

queue—消息在死信之前所在队列的名称, 交换-发布消息的交换目的是注意,如果消息多次出现死信,则这将是死信交换, 路由密钥-路由密钥包括CC密钥,但不包括发布消息时使用的BCC密钥, 会有更多,但这些是你想要注意的事情。通过检查邮件上的这些属性,可以使用原始路由密钥通过原始exchange重新发送原始邮件。或者,您可以直接重新发送到原始目标队列。。。我个人认为通过exchange发送会更好,因为原始队列可能不再存在,这取决于系统配置、用户创建独占队列等


有了这些信息,重新创建功能集应该不会太困难。rabbitmq提供了您所需的所有功能,您只需编写一点代码即可利用它。

此功能只需rabbitmq和一点代码即可轻松重新创建。虽然NServicebus包含它很好,但使用MassTransit构建它应该很容易

注意:我已经有几年没有使用.NET了,所以我对NSB和MT的知识有些生疏。。。这将是高层次的答案,只有,没有代码

首先,要正确配置死信交换和有毒消息队列

一旦您知道某条消息正在导致错误,并且是一条坏消息,您可以拒绝或拒绝该消息,而无需重新查询该消息,以便通过死信交换DLX发送该消息

邮件通过DLX后,您将在邮件上拥有一些附加属性,包括:

queue—消息在死信之前所在队列的名称, 交换-发布消息的交换目的是注意,如果消息多次出现死信,则这将是死信交换, 路由密钥-路由密钥包括CC密钥,但不包括发布消息时使用的BCC密钥, 会有更多,但这些是你想要注意的事情。通过检查邮件上的这些属性,可以使用原始路由密钥通过原始exchange重新发送原始邮件。或者,您可以直接重新发送到原始目标队列。。。我个人认为通过exchange发送会更好,因为原始队列可能不再存在,这取决于系统配置、用户创建独占队列等


有了这些信息,重新创建功能集应该不会太困难。rabbitmq提供了您所需的所有功能,您只需编写一点代码就可以利用它。

使用rabbitmq,可以轻松地在队列之间移动消息。通过安装电铲插件,您可以使用管理控制台手动执行此操作

您还可以在RabbitMQ中创建调度的铲,并根据该调度执行消息移动。在RabbitMQ中配置铲子的可见性对我们的操作人员来说是非常宝贵的,因为他们很少认为Windows计划的任务或其他随机计划程序会做一些像将以前失败的消息移回生产队列那样危险的事情

我建议你去看电影 阅读这篇关于MassTransit如何处理有毒信息的博文:


RabbitMQ周围的工具比MSMQ提供的任何工具都要好得多,这也是我们完全放弃MSMQ用于生产队列的原因之一。

使用RabbitMQ,可以轻松地在队列之间移动消息。通过安装电铲插件,您可以使用管理控制台手动执行此操作

您还可以在RabbitMQ中创建调度的铲,并根据该调度执行消息移动。在RabbitMQ中配置铲子的可见性对我们的操作人员来说是非常宝贵的,因为他们很少认为Windows计划的任务或其他随机计划程序会做一些像将以前失败的消息移回生产队列那样危险的事情

我建议阅读这篇关于MassTransit如何处理有毒信息的博文:


RabbitMQ周围的工具比MSMQ提供的任何工具都要好得多,这也是我们完全放弃MSMQ进行生产排队的原因之一。

谢谢Chris,这非常有帮助!谢谢克里斯,这很有帮助!