2014-09-29 2 views
1

Используя клиент StackExchange.Redis в приложении C#, я пытаюсь использовать PubSub для межшироковой связи между веб-серверами, использующими одно и то же приложение. В этой модели каждый сервер имеет собственный сервер Redis, а его мультиплексор соединений устанавливает локальный сервер в качестве первого сервера в списке. Другими словами, SERVER_A и SERVER_B каждом запуске сервера Redis на порту 6379 и имеют строки подключения следующим образом:Клиент StackExchange Redis .NET не получает сообщения при переупорядочении соединений

SERVER_A --> "SERVER_A:6379,SERVER_B:6379" 
SERVER_B --> "SERVER_B:6379,SERVER_A:6379" 

Использование внешних клиентов, чтобы подписаться на каждый сервер Redis, я могу видеть SERVER_A публикации сообщений на его локальном сервере Redis , Однако SERVER_B не собирает сообщение, несмотря на наличие соединения через мультиплексор. Когда я переставляю порядок соединений, чтобы они совпадали, тогда сообщения из A подбираются B. Есть ли что-то в настройке или иначе мне нужно сделать так, чтобы мультиплексор соединения прослушивал подписки на всех серверах или это ошибка в клиенте StackExchange.Redis?

ответ

0

Вы не упомянули репликации в своем описании. Когда SE.Redis подключается к нескольким серверам предназначено быть родственным семейством серверов - например, либо:

  • два или более 2. * сервера, связанных через ведущий/ведомый
  • три или более 3. * серверы, связанные через формальный кластер

Группы репликации имеют механизмы распределения для pub/sub. Два отключенных сервера: нет.

+0

Хорошо, это имеет смысл; наша установка не имеет формального кластера, потому что мы запускаем Redis в Windows, и мы не можем использовать Master/Slave, потому что каждый сервер Redis должен быть доступен для записи. На самом деле мы издеваемся над мастером/подчиненным, заставляя наше приложение писать на оба сервера Redis с помощью «IEnumerable » и считывать с него с помощью одного ConnectionMultiplexer, настроенного так, как указано в вопросе. Мы просто попадаем в PubSub и не можем понять, что происходит. – saluce

+0

@saluce there * - это опция, позволяющая подчиняться подчиненным, но это будет означать, что они расходятся и не станут истинным хозяином/подчиненным - также публикация на главном компьютере будет идти к подчиненному, но опубликовано на подчиненном не доходит до мастера. На этой неделе была интересная дискуссия по списку рассылки redis о репликации с несколькими мастерами (отличная от кластера), но это всего лишь случайный всплеск со стороны третьей стороны и, конечно же, не будет существовать в версии Windows MSOpenTech. –