在Linux容器上的dotnet Core中实现消息使用者

时间:2019-06-13 07:03:54

标签: linux docker kubernetes .net-core architecture

我正在寻求实施一项将在Linux kubernetes集群上部署的服务。它会使用和处理队列中的消息。

我的问题是,当今在dotnet核心中实现工人的推荐和常规方式是什么? ASPNET应用程序中的后台任务似乎过大,因为我不需要处理Web请求。一些研究使我认为构建IHost和自定义IHostedService的控制台应用程序可以完成这项工作。我对这种情况下没有示例感到惊讶,尽管这使我想知道我是否缺少实现这一目标的更标准方法?

1 个答案:

答案 0 :(得分:0)

使用“简单”控制台应用程序,通过在最后一个代码行添加Console.ReadLine()显然将不起作用,因为在K8s中运行时没有输入流。

推荐的实现方法是使用主机生成器。

如前所述,

WebHost适用于 web 应用程序,但是对于所有其他通常不需要Web功能的其他类型的应用程序,都有一个通用的主机生成器。

尽管起初似乎有点“过大杀伤力”,但实际上不是。 当计划在Kubernetes上运行时,您必须考虑快乐路径以外的其他路径。 例如,在该部署发生缩减事件时,允许K8s向您发出信号通知终端(处理SIGTERM),或者在使用HostBuilder时开箱即用地支持节点排空(以正常关闭)。 此外,您还可以享受其他内置功能,例如从文件自动重载设置(将ConfigMap安装到文件时效果很好)

文档: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/generic-host?view=aspnetcore-2.2

示例项目: https://github.com/aspnet/AspNetCore.Docs/tree/master/aspnetcore/fundamentals/host/generic-host/samples/2.x/GenericHostSample

祝你好运。