![](/img/trans.png)
[英]Dotnet Core Docker Container Leaks RAM on Linux and causes OOM
[英]Implementing a Message Consumer in dotnet Core on Linux container
我正在尋求實現將在Linux kubernetes集群上部署的服務。 它將使用和處理隊列中的消息。
我的問題是,今天在dotnet核心中實現工人的推薦和常規方式是什么? ASPNET應用程序中的后台任務似乎過大,因為我不需要處理Web請求。 一些研究使我認為構建IHost
和自定義IHostedService
的控制台應用程序可以完成這項工作。 我對這種情況下沒有示例感到驚訝,盡管這使我想知道我是否缺少實現這一目標的更標准方法?
使用“簡單”控制台應用程序,通過在最后一個代碼行添加Console.ReadLine()顯然將不起作用,因為在K8s中運行時沒有輸入流。
推薦的實現此方法的方法是使用主機生成器。
如前所述,WebHost用於Web應用程序,但是對於所有其他通常不需要Web功能的其他類型的應用程序,都有一個通用的主機構建器。
盡管起初它似乎有點“過大殺傷力”,但實際上並非如此。 當計划在Kubernetes上運行時,您必須考慮快樂路徑以外的其他路徑。 例如,在該部署發生縮減事件時,允許K8s向您發出信號通知終端(處理SIGTERM),或者在使用HostBuilder時開箱即用地支持節點排空(以正常關閉)。 此外,您還可以享受其他內置功能,例如從文件自動重載設置(將ConfigMap安裝到文件時效果很好)
文檔: https : //docs.microsoft.com/zh-cn/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
祝好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.