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