Я работаю над почтовой службой, которая использует Redis-smq
. Сам пакет использует node-redis
, который является самым популярным пакетом redis для nodejs.
. Итак, на моем сервере node js api есть 1 издатель и 2 подписчика и 1 производитель, работающий отдельно как скрипты узла.
Текущий поток - -
- Издатель api-сервера публикует сообщение в очереди redis (prep-queue).
- Подписчик сценария узла принимает сообщение и затем публикует sh новое сообщение в другой очереди на повторную передачу (очередь отправки).
- Другой сценарий узла принимает сообщение и отправляет электронную почту.
Теперь все работает нормально, но через час или 2, производитель в узле api-сервера как бы отключается без какой-либо ошибки. Поэтому, даже если он показывает успех при создании сообщений, у подписчика нет ответа.
Теперь мне нужно перезагрузить сервер API, чтобы снова начать получать сообщения и в течение следующих 1-2 часов. Производитель и подписчик, написанные в скриптах узла, работают нормально без перезапуска, это просто производитель на сервере API узла. Сервер API также использует socket.io для API в реальном времени для основного приложения angular. И скрипт узла, и сервер API узла используют одну и ту же конфигурацию Redis (ниже).
module.exports = {
namespace: 'xyz',
redis: {
driver: 'redis',
options: {
host: process.env.REDIS_HOST || '127.0.0.1',
port: process.env.REDIS_PORT || 6379,
socket_keepalive : true,
socket_initdelay: 5*1000,
retry_strategy: function (options) {
return 12000;
},
},
},
monitor: {
enabled: true,
host: '127.0.0.1',
port: 3010,
},
};