繁体   English   中英

MassTransit:无法使用托管标识访问 Azure 服务总线

[英]MassTransit: Cannot access Azure Service Bus using managed Identity

我在 Azure function 启动时有以下代码

 builder.Services.AddScoped<ExampleConsumer>()
                .AddMassTransitForAzureFunctions(cfg =>
                {
                    cfg.AddConsumersFromNamespaceContaining<ConsumerNamespace>();
                }, "AzureWebJobsServiceBus");

配置:

AzureWebJobsServiceBus__fullyQualifiedNamespace:  <service_bus_name>.servicebus.windows.net

Function 签字:

public Task Run([ServiceBusTrigger(<topic_name>, <subscription_name>, Connection = "AzureWebJobsServiceBus")] string message, FunctionContext context)

它抛出异常

System.ArgumentNullException: A connection string must be used for Azure Functions. (Parameter 'AzureWebJobsServiceBus')

为 Azure function 配置 MassTransit 以使用托管标识连接 Azure 服务总线的正确方法应该是什么?

我研究了公共交通源代码,发现它需要包含 SharedAccessKeyName 和 SharedAccessKey 的连接字符串,否则会抛出异常。 还有其他配置方法吗?

  • MassTransit.WebJobs.ServiceBus 版本 8.0.7
  • Azure Function v4 和 .NET6

连接字符串AzureWebJobsServiceBus应具有从 Azure 门户复制的正确格式。

sb://namespace.servicebus.windows.net/

不应指定SharedAccessKeyNameSharedAccessKey ,这样 MassTransit 将使用默认的 Azure 凭据(最终将使用托管标识)。

更新

如果连接字符串中未提供凭据,则MassTransit将使用托管标识。

我在 Azure function 启动时有以下代码

 builder.Services.AddScoped<ExampleConsumer>()
                .AddMassTransitForAzureFunctions(cfg =>
                {
                    cfg.AddConsumersFromNamespaceContaining<ConsumerNamespace>();
                }, "AzureWebJobsServiceBus:MassTransit");

配置:

AzureWebJobsServiceBus:fullyQualifiedNamespace:  <service_bus_name>.servicebus.windows.net

对于大众运输:

AzureWebJobsServiceBus:MassTransit:Endpoint=sb://<service_bus_name>.servicebus.windows.net

Function 签字:

public Task Run([ServiceBusTrigger(<topic_name>, <subscription_name>, Connection = "AzureWebJobsServiceBus")] string message, FunctionContext context)

我必须为 Azure Function 触发器和 MassTransit 提供两个连接字符串。 这两者之间的区别对于公共交通它以Endpoint=sb://开头

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM