为什么“等待发布<t>”挂起/未完成/未完成

时间:2019-03-08 15:23:31

标签: rabbitmq masstransit

以下代码段已经运行了一段时间,并且突然停止了返回:

await availableChangedPublishEndpoint
   .Publish<IAvailableStockChanged>(
        AvailableStockCounter.ConvertSkuQtyToAvailableStockChangedEvent(
            newAvailable,
            absMessage.Warehouse)
        );

ConvertSkuQtyToAvailableStockChangedEvent中没有什么聪明的-它只是将一个简单的类映射到另一个简单的类。

我们在此代码之前和之后添加了日志,现在肯定已经停止了。其他系统正在正常发布,其他消息正在从此应用程序发送(例如,日志实际上是通过RabbitMQ发送的)。我们已经重新部署,并且已经升级到最新的MassTransit版本。我们看到消息正在发布-可能多次发布,但是此Publish方法从不返回。

1 个答案:

答案 0 :(得分:1)

我们的RabbitMQ节点损坏了,并在一个节点上重新启动了干净的服务。我知道这种行为可能还有其他原因,但这是我们的问题。

systemctl restart rabbitmq-server

进一步查看RabbitMQ,我们发现连接到此交换的某些队列未同步(请参见下文),当我们尝试对其进行同步时,则不起作用。

enter image description here

我们也无法删除其中一些不同步的队列。

我们认为,其中一个节点的意外关闭导致了此问题-但这使大多数队列/交换完全正常。