Как создать очередь почты с помощью kue?
Добрый день.
Есть письма, которые отправляет пользователь. При отправке, каждое письмо помещается в базу данных, где ей присваевается номер письма и время добавления в базу. В отправке писем, есть лимит на минуту, то есть, пользователь не может отправить больше 100 писем в минуту. Если количество писем превышено, то следующее письмо станет в очередь и отправится через минуту и так далее. Вот часть моего кода. queue.create(`email`, { title: `HELLO KUE 1`, id: Math.floor(Math.random() * Math.floor(100)), to: 'tj@learnboost.com', }) .save((err) => { if (!err) console.log(`error`); } ); Но я не понимаю, как правильно вызвать queue.process Вызывать setInterval каждую минуту? Я думал, что у kue есть механизм для этого? Подскажите пожалуйста, как это можно сделать с помощью kue |
Цитата:
Но о каких пользователях речь, надо полагать это владелец, а 100 в минуту, это ограничение хоста? А ведь не только это ограничение важно, важны еще и домены, на которые отправляется почта. Если на какой либо почтовый сервер с вашего домена будут пачками отправляться письма каждую минуту, то это большая вероятность того, что ваш домен попадет в итоге в черный список. |
Я тоже, к сожалению, не силен в этой теме, но просто призадумался. Что значит 100 писем в минуту и как их (письма и минуты) считать?
Допустим в интервал от 0 до 30 сек отправлено 10 писем В интервал от 30 до 60 сек - 60 писем От 60 до 90 - 60 писем От 90 до 120 - 10 писем. Считается ли, что за минуту от 30 до 90 сек отправлено больше 100 писем? |
О до меня дошло
Цитата:
|
voraa,
как? Ну неужели, если речь идет о рассылке, вы запустите какой-то скрипт и станете ждать окончания его работы? Сомневаюсь. :) Такие вещи обычно отдаются планировщику задач, и к базе он обращается не "к сотому назад", а помещает в базу статус выполнения задачи и время ее последнего выполнения. Вот от этой метки и извлекаются из базы очередные N записей. |
Но не буду же я писать setInterval который будет обращаться к базе? Я думал, что в kue есть подобный механизм - отложенная очередь - или что-то типа того....
|
Вощемана нужен RateLimiter
1) Kue is no longer maintained Please see e.g. Bull as an alternative. Thank you! 2) https://github.com/Automattic/kue/issues/441 https://www.binpress.com/rate-limiting-with-redis-2/ -- Почему kue? Разраб же пишет бери это: https://github.com/OptimalBits/bull/...RENCE.md#queue |
Цитата:
Планировщик задач, это cron, запускаемый в указанные интервалы времени, это может быть каждую минуту, 10 минут, час ... И он есть на каждом уважающем себя хосте, а в панели управления хостом обязательно поясняется как у конкретного хостера запустить из под cron скрипт. |
Часовой пояс GMT +3, время: 05:21. |