asp.net core 2 web api задача запустить фоновую задачу - PullRequest
0 голосов
/ 15 мая 2019

Я сейчас работаю с приложением. мое требование - я хочу вставить данные вasticsearch без ожидания в контроллере. Этот процесс вставки выполняется в другом фоновом потоке без ожидания в контроллере. Контроллер вызывает этот шаг перед возвратом и не дожидаясь ответа пользователя на этот процесс.

Кто-нибудь скажет мне, как я могу управлять этой архитектурой

1 Ответ

0 голосов
/ 15 мая 2019

Ваш вопрос слишком широкий, но, вообще говоря, вам нужен какой-то фоновый процесс и способ наметить работу над этим.В этом отношении существует буквально множество вариантов, но они попадают в одно из следующих трех основных сегментов:

  1. IHostedService в ASP.NET Core.Существует пример кода для размещенной службы на основе очередей , который, вероятно, соответствует вашим потребностям.Это, вероятно, самый простой способ начать работу, но при этом наименее надежный.В частности, если ваше приложение останавливается, очередь будет идти вместе с ним, что может привести к потере элементов.

  2. Сторонний инструмент, такой как Hangfire .Это хороший промежуточный подход.Относительно прост в настройке и относительно устойчив.

  3. Очередь сообщений, подобная RabbitMQ.По сути, вы отправляете сообщение в очередь, а затем у вас есть «подписчики», которые прослушивают в этой очереди определенные типы сообщений и предпринимают действия, основанные на этом.Это немного сложнее в настройке, но и гораздо более гибко, чем другие подходы.Существуют способы обеспечить доставку сообщений, даже когда возникают сбои, и у вас может быть несколько работников для циклического перебора очереди для масштабирования.

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