Как убедиться, что обработка обрабатывается изящно - PullRequest
0 голосов
/ 14 декабря 2018

Я бы хотел, чтобы моя заявка закончилась изящно.Возможно ли это сделать?Если да, то как мне это сделать?

Вот общий обзор того, как выглядит приложение:

// .NET Core Console App
while (true)
{
    // Get the next message from the Queue. The Queue is a database table that contains a list of "things that need to be done".

    // Spawn a Task to handle that message. Send the Task all the data it requires to complete. Generally speaking, the Task will collate all the data in an object and make a call (PUT, POST, DELETE) against a set of RESTful web services.

    // Sleep for some time.
    Thread.Sleep(sleepTimeInSeconds * 1000);
}

Это приложение обычно работает без остановок на каком-либо сервере.Но если пользователю нужно отключить его, я бы хотел, чтобы работа корректно завершилась:

  • Прекратите запрашивать очередь для дальнейших сообщений.Запрашиваемые сообщения блокируются базой данных, поэтому другие процессы не могут обрабатывать одно и то же сообщение.
  • Разрешить выполнение любых запущенных задач.

Возможно ли это сделать?Какие технологии / библиотеки / концепции я могу использовать для достижения этой цели?

1 Ответ

0 голосов
/ 14 декабря 2018

Чтобы избежать сложности управления заданиями в вашем коде, вы можете использовать сторонний пакет, а именно: Hangfire .

По сути, вы будете запускать и забывать свои задания, а другиеобрабатывать ручку тех.Если ваше приложение выйдет из строя, сервер зависания продолжит работу.

...