处理完消息后调用next()后,消息未从队列中删除。

时间:2018-11-13 14:07:15

标签: redis queue message-queue node-redis

下面是我对RSMQ worker的实现

app.queueListener.smsWorker = new RSMQWorker(messagingConfig.queues.sms.queueName, {
  rsmq,
  "queueName": "sms",
  "visibilityTimeout": 60,
  "sendDelay": 1,
  "maxReceiveCount": 2
});
app.queueListener.smsWorker.on('message', function (message, next, id) {
  message = JSON.parse(message);
  app.models.MessagingLog.updateConsumptionDate(messagingConfig.queues.sms.queueName, id);
  app.models.AppSMS.sendSMS(message.type, message.mobileNumber, message.content, message.appUserId)
    .then(function () {
      app.models.MessagingLog.updateProcessedDate(messagingConfig.queues.sms.queueName, id);
      next();
    })
    .catch(function (error) {
      console.error(error);
      return next();
    });
});
app.queueListener.smsWorker.on('error', function (error, message) {
  console.error('ERROR', error, message.id);
});
app.queueListener.smsWorker.on('exceeded', function (message) {
  console.log('EXCEEDED', message.id);
});
app.queueListener.smsWorker.on('timeout', function (message) {
  console.log('TIMEOUT', message.id, message.rc);
});

当我在队列中发送消息时,它不会被删除..

例如,如果我发送短信,则它发送短信10次..

我已将maxRecieveCount配置为2,而不是默认值10,但仍然发送短信10次,直到被超过为止。

0 个答案:

没有答案