У меня есть требование, согласно которому мне нужно отправлять электронные письма всем клиентам в базе данных каждый день в 5 часов утра по их часовому поясу, поэтому, если в базе данных есть 2 клиента, один из которых находится в часовом поясе Asia/Dubai
, а другой - в Asia/Kolkata
часовом поясе он должен отправлять им письма, когда у них 5 утра.
Это то, что я получил до сих пор
const customers = [
{
id: 1,
timezone: "Asia/Dubai",
},
{
id: 2,
timezone: "Asia/Kolkata",
},
];
agenda.define("mail", async jobT => {
console.log("here 2 jobT", jobT.attrs.data);
});
agenda.define("users", async job => {
console.log("here");
customers.map(async item => {
await agenda.every(
"5 seconds",
"mail",
{
customer: item,
},
{
timezone: item.timezone,
},
);
});
});
await agenda.start();
await agenda.every("30 seconds", "users");
Это просто записывает начальный here
и это в значительной степени это. Идея, к которой я стремился, заключается в том, что система будет запускаться каждые 30 секунд для выборки всех клиентов в системе. Таким образом, даже если будут добавлены новые клиенты, они будут включены в этот хрон.
После того, как клиенты выбраны, для каждого графика клиентов повторяется повторение крона каждые 5 секунд в их часовом поясе ( Я понимаю, что часовой пояс не имеет значения в этом случае, но это было только для подтверждения концепции ) и вызовите обратный вызов mail
, который затем будет отвечать за отправку почты данному конкретному клиенту.