在 MassTransit 5.2.1 的 ConfigurePublish 中使用发送执行

UseSendExecute in ConfigurePublish in MassTransit 5.2.1

在 MassTransit 5.2.0 中,我使用 ConfigurePublish 中的 UseSendExecute 方法将 headers 添加到特定消息类型:

    var bus = BusConfigurator.ConfigureBus((h,cfg) =>
    {
         h.ConfigurePublish(x =>
            x.UseSendExecute<TestMessage>(p => 
            { 
                  p.Headers.Set("x-deduplication-header", p.Message.Day.Ticks);
            }));
    });

升级到 MassTransit 5.2.1 后,方法 UseSendExecute 在 ConfigurePublish 中不再可用。

深入了解 MassTransit 的变化我发现问题的发生是因为 MassTransit.IPublishPipeConfigurator 不再实现 MassTransit.ISendPipeConfigurator 并且 UseSendExecute 是 MassTransit.DelegatePipeConfiguratorExtensions.[=11= 中 ISendPipeConfigurator 的扩展方法]

如何使用 5.2.1 版本设置相同的发布配置?

嗯,您正在配置发布行为。新语法为:

var bus = BusConfigurator.ConfigureBus((h,cfg) =>
{
    h.ConfigurePublish(pc => pc.AddPipeSpecification(
        new DelegatePipeSpecification<PublishContext<TestMessage>>(p =>
        {
            p.Headers.Set("x-deduplication-header", p.Message.Day.Ticks);
        })));
});