You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure WebJob读取Service Bus消息异常成因咨询(Closing messaging factories)

问题成因咨询

我们使用NServiceBus 6.4.3和**.NET Framework 4.6.1**开发了Azure WebJob,用于读取Azure Service Bus队列消息。该WebJob4年前曾突发停止读取消息,2023年1月11日再次复现。日志中出现NServiceBus.ForwardingTopology Closing messaging factories信息及未处理的System.Threading.Tasks.TaskCanceledException异常,目前仅能通过重启WebJob解决,现咨询该错误的成因。

相关日志

[11/07/2022 22:27:08 > 3eb1d6: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
[11/07/2022 22:27:08 > 3eb1d6: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
[11/07/2022 22:27:08 > 3eb1d6: ERR ]    at Microsoft.Azure.WebJobs.JobHost.Call(MethodInfo method)
[11/07/2022 22:27:08 > 3eb1d6: ERR ]    at Rock.Invoice.InvGateway.WebJobHost.Program.Main()
[11/07/2022 22:27:08 > 3eb1d6: SYS ERR ] Job failed due to exit code -532462766
[11/07/2022 22:27:08 > 3eb1d6: SYS INFO] Status changed to Stopped
[11/07/2022 23:00:47 > 7b5dbd: SYS INFO] WebJob is still running
[11/07/2022 23:51:47 > b9948f: INFO] 2022-11-07 23:51:47.223 INFO  NServiceBus.ForwardingTopology Closing messaging factories
[11/07/2022 23:51:47 > 7b5dbd: INFO] 2022-11-07 23:51:47.668 INFO  NServiceBus.ForwardingTopology Closing messaging factories
[11/08/2022 07:13:26 > b9948f: SYS INFO] WebJob is stopping due to website shutting down
[11/08/2022 07:13:26 > b9948f: SYS INFO] Status changed to Stopping
[11/08/2022 07:13:26 > b9948f: ERR ] 
[11/08/2022 07:13:26 > b9948f: ERR ] Unhandled Exception: System.Threading.Tasks.TaskCanceledException: A task was canceled.
[11/08/2022 07:13:26 > b9948f: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
[11/08/2022 07:13:26 > b9948f: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
[11/08/2022 07:13:26 > b9948f: ERR ]    at Microsoft.Azure.WebJobs.Host.Protocols.PersistentQueueWriter`1.<EnqueueAsync>d__3.MoveNext()
[11/08/2022 07:13:26 > b9948f: ERR ] --- End of stack trace from previous location where exception was thrown ---

错误成因分析

  • Azure平台强制回收导致进程终止:日志中明确显示WebJob is stopping due to website shutting down,说明Azure因资源调整、维护或实例回收等原因,强制终止了WebJob进程。此时NServiceBus正在执行资源清理(关闭消息工厂),而WebJobs Host的内部队列写入操作被中断,触发TaskCanceledException。
  • NServiceBus旧版本的优雅退出缺陷:NServiceBus 6.4.3是较早期版本,在处理平台强制停止信号时,可能缺乏完善的优雅退出逻辑,无法正确捕获并处理任务取消场景,导致未处理异常抛出,最终WebJob异常退出。
  • WebJobs Host内部操作被取消:PersistentQueueWriter.EnqueueAsync抛出取消异常,说明WebJobs Host在尝试向内部持久化队列写入数据时,因进程被终止而导致任务被取消,这种情况通常发生在平台触发停止后,WebJob没有足够时间完成资源清理流程。
  • 旧组件兼容性问题:NServiceBus 6.4.3和.NET Framework 4.6.1均为发布已久的版本,可能与Azure Service Bus服务端的协议更新、WebJobs Runtime的新版本存在兼容性冲突,在网络波动、平台回收等边缘场景下,无法自动恢复连接或处理异常,导致WebJob停止消费消息。

内容的提问来源于stack exchange,提问作者David Klempfner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 07:35:20