MassTransit 为 Azure 服务总线发布自定义属性

MassTransit publishing custom properties for Azure Service Bus

有谁知道如何通过 MassTransit 发布将 ApplicationProperties(又名自定义属性)发布到 Azure 服务总线?

在原生ASB客户端库中,我们可以这样做...

var message = new ServiceBusMessage(msg);
message.ApplicationProperties.Add("foo", "bar");

但我看不到如何在 MassTransit 中执行此操作。查看 Publish 方法的重载,我能看到的最接近的是 headers - 即...

await _bus.Publish(new SomeEvent { SomeProperty = "some-value" },
    context =>
    {
        context.Headers.Set("MyCustomProperty", "my-custom-value");
    },
cancellationToken);

更新:我写了上面的片段,作为我正在做的事情的一个例子——但它不是一个精确的副本。在看到 Chris 的回答后发现 - 上面的片段 确实 有效 - 但在我的实际代码中,“some-value” 实际上是一个布尔值 - 这就是问题所在!

但这只是将 headers 添加到 MT 消息信封 - 而不是 ASB 自定义属性。

即。在我的第一个示例中,这是我在 Azure 服务总线资源管理器中看到字段的位置...

如果 header 是字符串,或者可以使用内置的 IFormatter 类型呈现为字符串,则应将其复制到 ApplicationProperties collection.

例如,使用:

await endpoint.Send(new PingMessage(), context =>
{
    context.Headers.Set("Easy-Header", "Easy-Value");
});

生成 header,如图所示: