【问题标题】:What if I don't close Service Bus Queue Client and the process stops?如果我不关闭服务总线队列客户端并且进程停止怎么办?
【发布时间】:2020-09-07 17:11:01
【问题描述】:

我正在尝试部署一个永无止境的消息泵来处理服务总线队列消息,作为 Azure AKS Kubernetes 上的 .NET Core 控制台应用程序。

应用程序将根据队列中的消息数量进行自动缩放,因此可以部署更多应用程序,并且在启动时它们将连接到服务总线并启动 RegisterMessageHandler。

自动缩放器也可能会关闭应用程序,但如果没有向控制台应用程序发出关闭信号的事件,我将无法正确关闭队列以停止接收消息或停止处理消息。

如何在 AKS 上的 .NET Core 中处理这个问题?

【问题讨论】:

    标签: asp.net-core kubernetes .net-core azureservicebus azure-aks


    【解决方案1】:

    Pod 关闭时有两个可用信号。 PreStop hook 可以配置为触发 shell 命令或针对您的容器生成 HTTP 请求。您还应该期望您的运行进程在 pod 停止之前收到一个 TERM 信号。

    这是一个blog post which covers some basics on hooking the TERM signal,通过在 Kestrel 服务器的上下文中实现 IApplicationLifetime

    本文有一个完整的simple implementation of IApplicationLifetime 端到端示例。

    对于 .NET 3.x,IHostApplicationLifetime 取代 IApplicationLifetime。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 2018-06-20
      • 1970-01-01
      相关资源
      最近更新 更多