![](/img/trans.png)
[英]Unable to post message to Azure Service Bus Queue from Azure API using Managed Identity
[英]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 的连接字符串,否则会抛出异常。 还有其他配置方法吗?
连接字符串AzureWebJobsServiceBus
应具有从 Azure 门户复制的正确格式。
sb://namespace.servicebus.windows.net/
不应指定SharedAccessKeyName
和SharedAccessKey
,这样 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.