Я реализую signalR, который подается Pub / Sub of Redis.Для взаимодействия с Redis я использовал StackExchange.Redis-1.2.6.
Проблема здесь в том, что когда я подписываю шаблон на концентраторе signalR, я создаю группу с ConnectionId и темой, которая мне интересна, и делаю то же самое в Redis Pub / Sub.
Когда я получаю сообщение, мне нужно отследить и уведомить всех заинтересованных подписчиков, но проблема в том, что Redis не дает мне соответствующий шаблон, а опубликованную тему.
ВотПример кода:
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
ISubscriber sub = redis.GetSubscriber();
RedisChannel channelWithLiteral = new RedisChannel("messages", RedisChannel.PatternMode.Literal);
sub.Subscribe(channelWithLiteral, (channel, message) =>
{
Console.WriteLine($"Literal -> channel: '{channel}' message: '{message}'");
});
RedisChannel channelWithPattern = new RedisChannel("mess*", RedisChannel.PatternMode.Pattern);
sub.Subscribe(channelWithPattern, (channel, message) =>
{
Console.WriteLine($"Pattern -> channel: '{channel}' message: '{message}'");
});
sub.Publish("messages", "hello");
Console.ReadLine();
Вывод:
Литерал -> канал: «сообщения» сообщение: «привет»
Шаблон -> канал:'messages' message: 'hello'
Что я ожидал / нужно:
Literal -> channel: 'messages' message: 'hello'
Pattern -> channel: 'mess *' сообщение: 'hello'
Вкл. https://redis.io/topics/pubsub при использовании PSUBSCRIBE мы уведомляемся как об исходной теме, так и о сопоставленном шаблоне.
Вот пример:
Есть ли какой-нибудь способ на StackExchange.Redis получить совпавший шаблон?