Azure Ошибка уведомления пространства ключей Redis с nodejs - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь получить все уведомления от Azure Уведомление пространства ключей Redis, используя следующий код, но оно не получает никаких уведомлений, я проверил ключ, он был создан в экземпляре Azure Redis. Кроме того, я включил Azure Уведомление пространства ключей Redis, установив для notify-keyspace-events значение Kxg.

. Любая помощь приветствуется:

const redis = require('redis');

process.env.REDIS_CACHE_HOST_NAME = "<cachename>.redis.cache.windows.net";
process.env.REDIS_CACHE_KEY = "<cachekey>";

const client = redis.createClient(
  6380,
  process.env.REDIS_CACHE_HOST_NAME,
  {
      auth_pass: process.env.REDIS_CACHE_KEY,
      tls: { servername: process.env.REDIS_CACHE_HOST_NAME },
  });

  const client2 = redis.createClient(
    6380,
    process.env.REDIS_CACHE_HOST_NAME,
    {
        auth_pass: process.env.REDIS_CACHE_KEY,
        tls: { servername: process.env.REDIS_CACHE_HOST_NAME },
    });

const db = 0;
const notificationChannel = "__keyspace@" + db + "__:*";

client.on("message", function (channel, message) {
    console.log('100', channel , message);
});
client.subscribe(notificationChannel, function (err) {
  console.log('101' , err);

  client2.set("foo", "bar", 'EX', 10, function (err) {
    console.log('102' , err);
  });
});

Обновление: I попробовал C# код с использованием фрагмента здесь https://github.com/rustd/RedisSamples/blob/master/HelloWorld/KeySpaceNotifications.cs, и он работает нормально, что означает что-то не так с моим NodeJs кодом для получения событий.

ОБНОВЛЕНИЕ2: Используя следующий код, я могу получить собственное опубликованное сообщение, поэтому в целом проблем с подпиской нет:

client.subscribe("pub");

client3.publish("pub", "a test message");

1 Ответ

1 голос
/ 21 апреля 2020

Я наконец-то понял, он работает с client.psubscribe и client.on("pmessage",...).

...