asp.net-core - 如果我不关闭服务总线队列客户端并且进程停止怎么办?
问题描述
我正在尝试部署一个永无止境的消息泵来处理服务总线队列消息,作为 Azure AKS Kubernetes 上的 .NET Core 控制台应用程序。
该应用程序将根据队列中的消息数量进行自动缩放,因此可以部署更多应用程序,并且在启动时它们将连接到服务总线并启动 RegisterMessageHandler。
自动缩放器也可能会拆除应用程序,但如果没有事件向控制台应用程序发出关闭信号,我将无法正确关闭队列以停止接收消息或停止处理消息。
如何在 AKS 上的 .NET Core 中处理这个问题?
解决方案
Pod 关闭时有两个可用的信号。PreStop挂钩可以配置为触发 shell 命令或针对您的容器生成 HTTP 请求。您还应该期望您的运行进程在 pod 停止之前收到一个 TERM 信号。
这是一篇博客文章,其中介绍了通过在 Kestrel 服务器的上下文中实现IApplicationLifetime来挂钩 TERM 信号的一些基础知识。
本文有一个IApplicationLifetime 简单实现的完整端到端示例。
对于 .NET 3.x,IHostApplicationLifetime取代了 IApplicationLifetime。
推荐阅读
- javascript - 有没有办法将公式或算法从 Ruby 传递到 Javascript?
- android - Dagger-Hilt @ViewModelInject sharedViewModel 不注入片段
- r - R中每日面板数据的每周平均值
- spark-streaming - 偶尔 Spark Structured Streaming 写入流得到 IllegalStateException: Race while writing batch 4
- django - 如何在 Django 中记录请求和响应?
- javascript - 如果匹配某个单词,如何删除字符串的最后一个单词?
- python-3.x - 使用jupyter在熊猫中应用过滤器,但没有记录只有标题显示
- c# - 创建表达式
从带有重载构造函数的方法名 - python - 为什么当 Python Sklearn 中的列大于行时它会起作用(线性回归)
- sql - 如果目标表具有 GENERATE ALWAYS AS IDENTITY COLUMN,Oracle 是否允许 SQL INSERT INTO 对 VALUES 使用 SELECT 语句