Реализация приемника сообщений в dotnet Core на контейнере Linux - PullRequest
1 голос
/ 13 июня 2019

Я ищу реализацию службы, которая будет развернута в кластере Linux Kubernetes.Он будет потреблять и обрабатывать сообщения из очереди.

Мой вопрос: каков рекомендуемый и традиционный способ реализации работника в ядре dotnet сегодня?Фоновая задача в приложении ASPNET кажется излишней, поскольку у меня нет требований для обслуживания веб-запросов.Небольшое исследование заставляет меня думать, что консольное приложение, создающее IHost и пользовательский IHostedService, сделало бы эту работу.Я удивлен отсутствием примеров для этого сценария, который заставил меня задуматься, упускаю ли я более стандартный способ реализации этого?

1 Ответ

0 голосов
/ 14 июня 2019

Используя «простое» консольное приложение, добавление Console.ReadLine () в последней строке кода, очевидно, не будет работать, так как при работе в K8s нет входного потока.

Рекомендованным способом реализации этого является использование Host Builder.

WebHost предназначен для веб приложений, как вы упомянули, но есть универсальный компоновщик хоста для всех других типов приложений, которые обычно не требуют веб-возможностей.

Хотя поначалу это может показаться немного «излишним» - на самом деле это не так. При планировании работы в 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

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...