Вызов UnsubscribeAll() в Redis ConnectionMultiplexer, влияющий на другие подписки RedisC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Вызов UnsubscribeAll() в Redis ConnectionMultiplexer, влияющий на другие подписки Redis

Сообщение Anonymous »

У меня есть класс Redis Connection Multiplexer, который я внедряю в два моих класса в конструкторах.

Код: Выделить всё

public class CLASS_1 {
IConnectionMultiplexer _redis;
public CLASS_1(IConnectionMultiplexer redis){
_redis = redis
subscribeToChannel()
}

public subscribeToChannel(){
ISubscriber redisSubscriber = null;
redisSubscriber = _redis.GetSubscriber();

redisSubscriber.Subscribe("REDIS_CHANNEL",(channel, message) => {
// alway listen to the messages and perform the task
}
}

~ CLASS_1(){
redisSubscriber.Unsubscribe("REDIS_CHANNEL")
}
}

public class CLASS_2 {
IConnectionMultiplexer _redis;
public CLASS_2(IConnectionMultiplexer redis){
_redis = redis
}

public async executeCommand(){
ISubscriber redisSubscriber = null;
redisSubscriber = _redis.GetSubscriber();

/// perform a task

await redisSubscriber.SubscribeAsync("REDIS_CHANNEL", callBack);

/// perform a task

if (redisSubscriber != null) {
redisSubscriber.UnsubscribeAll()
// even if I do redisSubscriber.Unsubscribe("REDIS_CHANNEL") it still affects the other subscriptions
}
}

}
— это одноэлементный класс, и я подписываюсь на канал Redis в CLASS_1. Это означает, что на канал можно подписаться только один раз. Этот класс всегда прослушивает сообщения канала и выполняет некоторые задачи при получении любого сообщения. Единственный раз, когда CLASS_1 отписывается от подписки на канал, происходит в деструкторе.
Теперь CLASS_2 не является одноэлементным классом, и в приложении существует несколько его экземпляров. . CLASS_2 также подписывается на тот же канал, на который подписан CLASS_1. Но CLASS_2 также выполняет отмену подписки в какой-то момент во время работы программы.
Теперь проблема возникает, когда CLASS_2 выполняет отмену подписки, он также отменяет подписку активная подписка в CLASS_1, и я не хочу отказываться от подписки в CLASS_1.
Теперь я пытаюсь выяснить, не является ли использование ConnectionMultiplexer причиной проблемы ? Или любая информация будет полезна.
Заранее спасибо! :)

Подробнее здесь: https://stackoverflow.com/questions/723 ... ther-redis
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»