带有 Azure 服务总线 V7 的 MassTransit:缺少 属性 TokenProvider

MassTransit with Azure Service Bus V7: missing property TokenProvider

我将 MassTransit 升级到 V7,与 Azure 服务总线的连接似乎发生了重大变化。以前,创建 IBusControl 的代码如下所示:

Bus.Factory.CreateUsingAzureServiceBus(cfg =>
  {               
    cfg.Host(this.Host,
      h =>
        {
          h.TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(
              "RootManageSharedAccessKey", this.AzureSharedAccessSignatureTokenKey);
        });
...

这不再编译,因为 属性 TokenProvider 不再在 IServiceBusHostConfigurator.

提供服务总线访问密钥的新方法是什么?

在 V7 中,可以在 属性 NamedKeyCredential 中指定共享访问令牌。所以我们写成:

而不是 h.TokenProvider = ...
h.NamedKeyCredential = new AzureNamedKeyCredential(
    "RootManageSharedAccessKey",
    this.AzureSharedAccessSignatureTokenKey);

A​​zure SDK v7 使用 TokenCredential,这是为所有各种 v7 SDK 指定凭据的新方法。你可以阅读它 in the documentation.

因此,对于 MassTransit,您可以将 TokenCredential 设置为任何受支持的凭据类型。

TokenCredential = new DefaultAzureCredential();