ioredis BLPOP не работает для нескольких списков в качестве аргументов - PullRequest
0 голосов
/ 15 апреля 2019

Я использую ioredis в качестве системы очередей для моего работника.

Согласно документации, BLPOP берет любое количество списков и извлекает из них необходимый элемент.

Я пропустилздесь некоторые важные подробности о Redis / BLPOP?

Любая помощь будет действительно признательна.

Для одной очереди / списка это работает совершенно идеально.

Это блокирует все из них.

getMessage(callback) {
    return new Promise((resolve, reject) => {
      this.rclient.blpop(
        QUEUE_TYPES.INVOICE_QUEUE,
        QUEUE_TYPES.AUDIT_MUTATION_QUEUE,
        QUEUE_TYPES.AUDIT_QUEUE,
        QUEUE_TYPES.ERROR_QUEUE,
        1,
        (err, res) => {
          if (err) reject(err);
          else resolve(callback(err, res));
        },
      );
    });
  }

Это прекрасно работает.

getMessage(callback) {
    return new Promise((resolve, reject) => {
      this.rclient.blpop(
        QUEUE_TYPES.INVOICE_QUEUE,
        1,
        (err, res) => {
          if (err) reject(err);
          else resolve(callback(err, res));
        },
      );
    });
  }
...