Hangfire — это библиотека для .net (core), позволяющая асинхронно выполнять некоторый код по принципу "fire and forget". Примером такого кода может быть отправка E-Mail, обработка видео, синхронизация с другой системой и т.д. Помимо "fire and forget" есть поддержка отложенных задач, а также задач по расписанию в формате Cron.
В настоящее время существует масса подобных библиотек. Несколько преимуществ, говорящих в пользу Hangfire:
- Простая конфигурация, удобный API
- Надежность. Hangfire гарантирует, что созданная задача будет выполнена хотя бы один раз
- Возможность параллельного выполнения задач и отличная производительность
- Расширяемость (вот ей-то мы и воспользуемся ниже)
- Достаточно полная и понятная документация
- Dashboard, на котором можно видеть всю статистику о задачах
Не буду слишком вдаваться в детали, поскольку существует немало хороших статей о Hangfire и способах его применения. В этой статье я разберу, как воспользоваться поддержкой нескольких очередей (или пулов задач), как починить стандартную retry-функциональность и сделать так, чтобы каждая очередь имела индивидуальную конфигурацию.