使用 Azure 服务总线 V7 的 MassTransit:缺少属性 TokenProvider
Posted
技术标签:
【中文标题】使用 Azure 服务总线 V7 的 MassTransit:缺少属性 TokenProvider【英文标题】:MassTransit with Azure Service Bus V7: missing property TokenProvider 【发布时间】:2022-01-18 16:33:58 【问题描述】:我将 MassTransit 升级到 V7,似乎与 Azure 服务总线的连接发生了重大变化。以前,创建IBusControl
的代码如下所示:
Bus.Factory.CreateUsingAzureServiceBus(cfg =>
cfg.Host(this.Host,
h =>
h.TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(
"RootManageSharedAccessKey", this.AzureSharedAccessSignatureTokenKey);
);
...
这不再编译,因为属性TokenProvider
不再在IServiceBusHostConfigurator
中。
提供服务总线访问密钥的新方法是什么?
【问题讨论】:
【参考方案1】:Azure SDK v7 使用TokenCredential
,这是为所有各种 v7 SDK 指定凭据的新方法。你可以阅读它in the documentation。
因此,对于 MassTransit,您可以将 TokenCredential
设置为任何受支持的凭据类型。
TokenCredential = new DefaultAzureCredential();
【讨论】:
【参考方案2】:在 V7 中,可以在属性 NamedKeyCredential
中指定共享访问令牌。所以我们写的不是h.TokenProvider = ...
,而是:
h.NamedKeyCredential = new AzureNamedKeyCredential(
"RootManageSharedAccessKey",
this.AzureSharedAccessSignatureTokenKey);
【讨论】:
以上是关于使用 Azure 服务总线 V7 的 MassTransit:缺少属性 TokenProvider的主要内容,如果未能解决你的问题,请参考以下文章
Azure 服务总线:使用函数、服务结构和 Web 作业? [关闭]
Azure 函数 - 从 Azure 密钥保管库获取服务总线连接字符串
在 Azure Function 中使用 xUnit 的 Moq 服务总线
Azure 服务总线:Microsoft.Azure.WebJobs.Script.HostDisposedException:主机已释放,无法使用