Masstransit:当无法访问代理时,PublishFault context.Message 为空

Masstransit: PublishFault context.Message is null when broker not reachable

我正在为实际代理 (RabbitMQ) 关闭时使用 Masstransit 发布的消息实施故障转移解决方案。 这个想法是抓取失败的消息,将它们存储在某个地方,然后在代理启动并且 运行.

时重新发布

可能的解决方案是使用 PublishObserver 实现 PublishFault 方法。

地铁版本为 5.5.5

public Task PublishFault<T>(PublishContext<T> context, Exception exception) where T : class
    {
        var message = context.Message; // message is null
        ..... // logic to save fault message in persistent storage
    }

预期结果是可以访问 context.Message

实际结果 - context.Message 为空;

这已在 MassTransit 的开发版本中修复,应该会在某个时候发布(如 5.5.6)。

https://github.com/MassTransit/MassTransit/pull/1546