Да, просто замени весь шаблон на этот:
|

01.11.2020, 12:54
|
|
Новичок на форуме
|
|
Регистрация: 01.11.2020
Сообщений: 5
|
|
|
Как создать очередь почты с помощью 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
|
|

02.11.2020, 10:12
|
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
|
Сообщение от Hellishcode
|
|
Вызывать setInterval каждую минуту? Я думал, что у kue есть механизм для этого?
|
Не знаю Node, и даже не представляю, что за зверь kue, но такие задачи не скрипт выполняет по таймеру, а вешают их на cron. Он в указанные интервалы времени запускает скрипт, который извлекает из базы, обрабатывает и отправляет.
Но о каких пользователях речь, надо полагать это владелец, а 100 в минуту, это ограничение хоста? А ведь не только это ограничение важно, важны еще и домены, на которые отправляется почта. Если на какой либо почтовый сервер с вашего домена будут пачками отправляться письма каждую минуту, то это большая вероятность того, что ваш домен попадет в итоге в черный список.
|
|

02.11.2020, 10:39
|
 |
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,782
|
|
|
Я тоже, к сожалению, не силен в этой теме, но просто призадумался. Что значит 100 писем в минуту и как их (письма и минуты) считать?
Допустим в интервал от 0 до 30 сек отправлено 10 писем
В интервал от 30 до 60 сек - 60 писем
От 60 до 90 - 60 писем
От 90 до 120 - 10 писем.
Считается ли, что за минуту от 30 до 90 сек отправлено больше 100 писем?
|
|

02.11.2020, 12:41
|
 |
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,782
|
|
О до меня дошло
|
Сообщение от Hellishcode
|
|
каждое письмо помещается в базу данных, где ей присваевается номер письма и время добавления в базу.
|
Надо смотреть время отправки сотого назад письма (если оно есть).
|
|

02.11.2020, 18:05
|
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
voraa,
как? Ну неужели, если речь идет о рассылке, вы запустите какой-то скрипт и станете ждать окончания его работы? Сомневаюсь.
Такие вещи обычно отдаются планировщику задач, и к базе он обращается не "к сотому назад", а помещает в базу статус выполнения задачи и время ее последнего выполнения. Вот от этой метки и извлекаются из базы очередные N записей.
|
|

05.11.2020, 11:30
|
|
Новичок на форуме
|
|
Регистрация: 01.11.2020
Сообщений: 5
|
|
|
Но не буду же я писать setInterval который будет обращаться к базе? Я думал, что в kue есть подобный механизм - отложенная очередь - или что-то типа того....
|
|

05.11.2020, 13:55
|
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
|
Сообщение от Hellishcode
|
|
Но не буду же я писать setInterval который будет обращаться к базе? Я думал, что в kue есть подобный механизм
|
Я не знаю вообще, что такое kue, тем паче что в нем есть. Но рассылка и подобные задачи, это скрипты вызываемые планировщиком. Следовательно на сервере пишут скрипт - диспетчер задач. К нему обращается планировщик. Диспетчер извлекает из таблицы задач задачу (задачи), которые актуальны на текущее время, если статус задачи имеет состояние "не выполнено" и время последнего выполнения задачи. Запускает скрипт (скрипты) задач, которые и обслуживают и рассылку, и прочие задачи. Скрипт занимающийся рассылкой извлекает N записей и базы от последнего времени выполнения задачи. Если более записей не будет, задача выполнена и скрипт пишет в таблицу задач статус "выполнено".
Планировщик задач, это cron, запускаемый в указанные интервалы времени, это может быть каждую минуту, 10 минут, час ... И он есть на каждом уважающем себя хосте, а в панели управления хостом обязательно поясняется как у конкретного хостера запустить из под cron скрипт.
|
|
|
|