Запланируйте выполнение задания в определенное время в заданном часовом поясе, используя повестку дня js - PullRequest
0 голосов
/ 22 марта 2020

У меня есть требование, согласно которому мне нужно отправлять электронные письма всем клиентам в базе данных каждый день в 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, который затем будет отвечать за отправку почты данному конкретному клиенту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...