Azure 服务总线触发队列在本地调试中未命中代码
Posted
技术标签:
【中文标题】Azure 服务总线触发队列在本地调试中未命中代码【英文标题】:Azure servicebus trigger queue not hitting code in local debugging 【发布时间】:2020-01-15 05:21:20 【问题描述】:使用服务总线触发器创建 Azure 函数并部署在 azure 门户中。使用 servicebusexplorer,将队列发送到门户并正常工作。但是在 azure 中停止该功能后,将消息从资源管理器发送到 Visual Studio 中的本地代码进行调试。但它不会触发。 我在 local.settings.json 中给出了服务连接字符串,并且队列名称是正确的。从 Visual Studio 运行该函数后,它会在 azure CLI 中引发错误。
错误:
MessageReceiver 错误(Action=Receive,ClientId=MessageReq.queue,Endpoint=sss-bbbb.servicebus.windows.net)xxxxx.queue,EntityPath=sss.ccccc Microsoft.Azure.ServiceBus:连接尝试失败,因为连接的一方在一段时间后没有正确响应,或者连接的主机没有响应,建立连接失败 错误代码:超时。 System.Private.CoreLib:连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应。
local.settings.json
"IsEncrypted": false,
"Values":
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"AzureWebJobsDashboard": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"ServiceBusConnectionString": "Endpoint=//",
"RequestTimeout": "600000"
【问题讨论】:
您的配置中有一个真正的端点,对吧?它实际上不是 "ServiceBusConnectionString": "Endpoint=//", 【参考方案1】:当本地防火墙策略阻止函数正在使用的 AMQP 连接时,我曾经见过这种情况。如果是这种情况,使用服务总线 .NET Core SDK 的控制台应用程序也可能会失败。那就是说你可以尝试不同的网络吗?错误读取这是一个网络解析问题。
【讨论】:
【参考方案2】:我遇到过类似的问题,公司防火墙阻止了服务总线流量。
我将TransportType=AmqpWebSockets
附加到我的连接字符串的末尾并且它起作用了。
【讨论】:
谢谢!我可以用这个修复来修复我的本地环境。以上是关于Azure 服务总线触发队列在本地调试中未命中代码的主要内容,如果未能解决你的问题,请参考以下文章
如何编写将部分传入消息传递给服务总线队列的 Azure HTTP 触发器函数?
Azure Logic App Standard - 从未触发服务总线触发器