首页 > 解决方案 > Masstransit:PublishFault context.Message 在无法访问代理时为空

问题描述

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

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

Masstransit 的版本是 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 为空;

标签: rabbitmqmasstransit

解决方案


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

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


推荐阅读