具有服务总线触发器超时警告的 Azure 函数

Azure Function with Service Bus Trigger Timeout Warnings

提问人:iquellis 提问时间:10/19/2023 更新时间:10/19/2023 访问量:51

问:

我们正在开发一个接口项目,将 Azure Functions 与 Azure 服务总线结合使用(使用启用了会话的主题)。一切正常,但当我在 Azure 门户中登录到函数应用的日志流时,我收到以下警告:

RunOperation encountered an exception and will retry. Exception: Azure.Messaging.ServiceBus.ServiceBusException: The operation did not complete within the allocated time 00:01:00 for object receiver2108. (ServiceTimeout)
 ---> System.TimeoutException: The operation did not complete within the allocated time 00:01:00 for object receiver2108.
   at Microsoft.Azure.Amqp.AsyncResult.End[TAsyncResult](IAsyncResult result)
   at Microsoft.Azure.Amqp.AmqpObject.OpenAsyncResult.End(IAsyncResult result)
   at Microsoft.Azure.Amqp.AmqpObject.EndOpen(IAsyncResult result)
   at Microsoft.Azure.Amqp.AmqpObject.<>c.<OpenAsync>b__51_1(IAsyncResult r)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)

但是,该软件工作正常。所有服务总线消息都正确运行。函数应用的主题触发器均已正确配置且工作正常。

我不知道这个警告来自哪里。

有什么想法吗? 提前致谢。

azure-functions 超时 警告 azureservicebus azure-servicebus-topics

评论

0赞 SiddheshDesai 10/19/2023
这是一个暂时性错误 请参阅此 github 问题 -github.com/Azure/Azure-Functions/issues/993
0赞 SiddheshDesai 10/19/2023
请参阅此 SO 线程答案 -stackoverflow.com/questions/51928301/... 您可以检查 ServicePointManager.DefaultConnectionLimit 属性
0赞 SiddheshDesai 10/19/2023
您可以在 Function.cs 代码中添加此行 - ServicePointManager.DefaultConnectionLimit = 100;
0赞 SiddheshDesai 10/19/2023
另一个线程指出这是一个暂时性问题 -stackoverflow.com/questions/38653126/...
0赞 Sean Feldman 10/19/2023
“遇到异常,将重试”应该是一个很好的提示。

答:

2赞 Jesse Squire 10/19/2023 #1

如果您没有看到消息处理中断,则可以安全地忽略此情况,并应将其视为正常行为。

此错误指示触发器使用的服务总线客户端无法与服务建立连接或链接。通常,这些都是暂时的,由网络固有的不可靠性引起。客户端将继续永久重试,并在网络连接恢复时恢复。

如果您没有看到消息处理出现明显的中断,则可以认为这些是良性的。如果发现吞吐量受到影响或消息流不一致,则可能表示需要解决的问题。

确保服务总线命名空间和函数应用在同一区域中运行是个好主意。如果是,则可能需要提交 Azure 支持请求,并要求调查函数应用的网络稳定性。

评论

0赞 iquellis 10/20/2023
非常感谢,杰西。我不知何故预料到了这一点。在我们的例子中,警告大约每隔几分钟就会发生一次,并且堆栈跟踪是巨大的。在这种情况下,我谈论的是开发环境,我们将忽略这一点。