Как сделать планирование работы в nodejs? - PullRequest
0 голосов
/ 14 января 2020

У меня особенная проблема. Я делаю приложение типа социальной сети. Когда я создаю сообщение и помещаю его в расписание для публикации в определенное время (например, планирование почты Gmail), я хочу иметь работу, которая проверяет часовой пояс сообщения и публикует его в соответствии с часовым поясом другой страны. Например, когда я планирую опубликовать его ночью в США, он должен отображаться на графиках азиатских пользователей в течение дня (только приблизительное обобщение). Как я могу достичь этого? Должен ли я запустить работу cron или есть лучший способ сделать это?

Любой подход, препятствующий добавлению другой вещи в технологический стек, будет высоко оценен.

Я использую nodejs, postgre, mon go, redis и RabbitMQ

1 Ответ

0 голосов
/ 14 января 2020

Сначала я хочу уточнить про CRON. Некоторые «отложенные» задачи или сценарии называются «Cron Jobs». Задания Cron отлично подходят для обычных действий, таких как резервное копирование, удаление файлов (например, журналов) и т. Д. c. Но в других случаях лучше реализовать бизнес-логику c в вашем приложении. Поскольку задания cron трудно масштабировать с помощью вашего приложения (запускаются в нескольких экземплярах), его также необходимо отслеживать, чтобы всегда работал только один экземпляр cron ... Конечно, вы можете использовать k8s cron.

In В вашем случае я бы сделал что-то вроде этого:

  • хранить все сообщения в UT C времени (это поможет вам с пользователями в разных часовых поясах)
  • добавить к сообщениям информацию о "не показывать до"
  • и дополнительных условных, где сравниваются "текущее время" и "не показывать до", когда нужно показать все сообщения

Другим способом можно используйте rabbitmq (отложенные сообщения) . Выполните эти действия в nodejs, когда придет время, и rabbitmq уведомит nodejs о задании. Возможно, это лучшее решение, но есть одна вещь ... теперь вы должны использовать RabbitMQ

Я думаю, у вас должна быть лучшая идея, какой вариант выбрать.

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