Вы когда-нибудь использовали функции JavaScript, которые выполняются один или определенное количество раз? Нужно ли было повторить попытку этих функций в случае сбоя или нужно было ограничить скорость? Вам нужно было указать какие-то приоритеты или определить, когда они должны запускаться? Тогда (возможно 🤷‍♂️) бычья очередь - это то, что вы искали. Он работает на Node.js и сохраняет свои данные в Redis.

Примером работы может быть что-то вроде этого: через 7 дней после того, как клиент совершил покупку, вы хотите отправить электронное письмо, содержащее ссылку на рейтинг.

Как я уже упоминал выше, bull нуждается в redis-db, где он хранит свои задания и сообщения и управляет ими. Если на вашем компьютере установлен докер, вы можете запустить:

docker run - назовите my-redis-container -p 6379: 6379 -d redis

Это запускает локальный redis-db, к которому вы можете подключиться через порт 6379.

Создание очереди

Прежде всего, мы создадим объект JavaScript, с помощью которого мы сможем создавать и использовать задания. Это называется очередь. Мы назовем его sendRatingMail, но вы можете выбрать любое имя, какое захотите. При создании экземпляра очереди вы должны указать хост и порт вашего redis-db (по умолчанию 127.0.0.1:6379).

Создание работы

Теперь, когда у нас есть очередь, давайте создадим наше первое задание 🥳. Для этого мы передадим объект data, содержащий адрес, на который мы хотим отправить электронное письмо. Дополнительно мы передадим несколько вариантов. В этом примере мы хотим обработать задание через 7 дней (86400000 мс) после его создания. Кроме того, в случае сбоя задание следует повторить 3 раза.

Теперь Bull добавляет задание в базу данных, включая объекты data и options , которые мы передали в функцию .add. .

Обработка вакансии

Для обработки заданий нам нужно указать функцию, которая будет вызываться для каждого задания в очереди. Здесь мы извлекаем свойство email из job.data, а затем вызываем воображаемую функцию sendRatingMailTo , которая отправляет письмо . Для отправки писем загляните в nodemailer.

Чтобы узнать больше о быке, посетите их GitHub или официальный гид по быкам!
Удачного кодирования 🥰!