Назад | Перейти на главную страницу

Что хорошего в очереди заданий?

В настоящее время я создаю API, который отправляет пользователям электронные письма с транзакциями. Я делаю это с очередью на работу, в частности с быком. Во время разработки что-то пришло мне в голову; где эти работы фактически выполняются? В настоящее время я отправляю эти задания через bull в базу данных redis, работающую в контейнере докеров на моем компьютере. Моя первая мысль заключалась в том, что эти задания выполняются в контейнере redis, но я полагаю, что это не так, потому что в этом контейнере redis не работает NodeJS, который я использую для своего API.

Я предполагаю, что эти задания фактически выполняются на той же машине, которая их создала. Но если это так, то что же хорошего в очереди заданий? Я думал, что смысл очереди заданий состоит в том, чтобы делегировать задачу чему-то другому, чтобы API не замедлялся из-за отправки всех этих писем. Насколько я понимаю, все, что сейчас происходит, просто откладывает задачу, отправляя и получая задание в Redis и обратно.

Я новичок в очередях на работу. Надеюсь, я достаточно ясно описал свою ситуацию.

Спасибо.

Очереди заданий предназначены для записи рабочих элементов.

Работа с очередью может при желании выполняться потоками, отдельными от остальной части приложения. Это полезно для асинхронной обработки в фоновом режиме с использованием нескольких процессоров.

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

Очередь может быть полезной, даже если она обрабатывается сервером приложений. Зависит от требуемых функций.


Эта реализация использует удаленную базу данных для хранения. Так что не стесняйтесь писать рабочий сервис (используя bull) и запускать его в отдельном контейнере.

  • Контейнер основного приложения adds рабочий элемент и идет дальше.
  • Очередь берет его, Redis предоставляет хранилище.
  • Рабочий контейнер processэто и делает вещь. Увеличение concurrency чтобы она вызывалась несколько раз параллельно.