Azure.Messaging.ServiceBus 无法配置 TransportType

问题描述 投票:0回答:3

我目前正在尝试按照此入门页面使用Azure.Messaging.ServiceBus包。我遇到了一个问题,我会收到以下错误:

Azure.Messaging.ServiceBus.ServiceBusException:'现有连接被远程主机强制关闭。错误代码:连接重置(服务通信问题)。

我知道发生这种情况是因为端口被阻止。为了解决这个问题,我创建了以下内容:

var option = new ServiceBusClientOptions
{
    TransportType = ServiceBusTransportType.AmqpWebSockets
};

var client = new ServiceBusClient(connectionString, options);

根据本文档

这解决了发送者和接收者代码的问题。当 Azure Function 设置使用 ServiceBusQueues 作为触发器时,我的问题仍然出现。我在该文档中看到我可以附加

TransportType=AmqpWebSockets;

添加到连接字符串,这样就可以解决问题。然而,该功能似乎并不存在于较新的 Azure.Messaging.ServiceBus 包中,仅存在于较旧的 Microsoft.Azure.ServiceBus 包中。

是否有一种方法可以在不降级包的情况下为 Azure Function 中的服务总线队列连接字符串分配 TransportType?它当前正在从 local.settings.json 获取连接字符串。

Azure 函数的代码:

[Function("ServiceBusQueueTrigger1")]
public static async void Run([ServiceBusTrigger("someQueueName", Connection = "somebus_SERVICEBUS")] string myQueueItem, FunctionContext context)
{
    // some function code
}
.net azure azure-functions azureservicebus azure-servicebus-queues
3个回答
2
投票

似乎附加 TransportType=AmqpWebSockets;将努力解决 Azure Function 的问题。它不适用于发送者/接收者代码,因为它们依赖于 NuGet 包。 Azure 函数没有。


0
投票

Azure Functions 环境没有 TCP 端口块,因此不需要 WebSocket。使用服务总线队列/主题/订阅从 Azure Functions 发送/接收数据不会受到所使用的其他环境的限制的影响。当系统的其余部分(例如本地)使用 Web 套接字连接到命名空间时,消息将流向您的函数并发送出去,不会出现任何问题。


0
投票

如果您将 Azure Functions 与 ServiceBusTrigger 结合使用,则可以将其添加到

host.json
以指定 AMQP Web 套接字的使用:

"extensions": {
  "serviceBus": {
    "transportType": "amqpWebSockets"
  }
}

正如其他答案和评论所指出的,在使用较新的软件包版本时,将

TransportType=AmqpWebSockets
附加到连接字符串没有任何效果。

© www.soinside.com 2019 - 2024. All rights reserved.