【问题标题】:MassTransit connection issue to rabbit mq (Messages are lost)MassTransit 与 rabbit mq 的连接问题(消息丢失)
【发布时间】:2021-07-15 13:51:22
【问题描述】:

我在我们的 c# 应用程序中实现了公共交通通用发布器,它在大多数情况下都可以正常工作,没有任何问题。但是我们注意到,最近当 RabbitMq 出现故障时,消息丢失了。如果连接尚未建立或无法在启动时建立,则应用程序按预期抛出,并对其进行处理和记录以供查看。但是如果连接在运行中消失,那么由于某种原因没有任何东西被抛出并且消息只是丢失了..在我们“发布”之前是否有任何方法可以使用此设置检查连接状态,因为如果连接断开,IsStarted 状态不会改变。

这里是我们使用的代码片段(这里只显示发布部分)

_messagePublisher.Start();
...

if (_messagePublisher.IsStarted)
            {
                
                await _messagePublisher.Publish(attempt, _messageRouter.ObtainRoutingKey(attempt));
            }
else {//Do stuff}

【问题讨论】:

    标签: c# rabbitmq masstransit


    【解决方案1】:

    如果您丢失消息,则不是 MassTransit 造成的。当 Publish 被调用时,它不会返回,直到消息被 RabbitMQ 传递并确认 - 除非您指定 CancellationToken 并取消它,在这种情况下将引发异常。

    IsStarted 不是任何 MassTransit 接口的属性,因此您可以查看该属性是如何实现的。总线上有对CheckHealth的调用,可用于验证代理连接的健康状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-30
      • 2023-01-31
      • 1970-01-01
      • 2019-06-16
      • 2018-03-02
      • 1970-01-01
      • 2014-02-28
      • 2014-08-23
      相关资源
      最近更新 更多