Я пытаюсь расширить функцию эластичности добавления / удаления узла к существующему для кластера Redis (не кластеризованный режим), который AWS Elastic Cache предлагает моему приложению.В идеале я хотел бы предотвратить любые прерывания обслуживания или перезапустить приложение для обновленного списка конечных точек.Я использую пакет StackExchange.Redis и не вижу способа добавить или удалить конечную точку из существующего мультиплексора соединения.
То, что я пытаюсь сделать, это поместить значения конечной точки в AWS'Параметр Store, чтобы приложение могло перезагрузить значения при отправке сообщения на подписку, которую приложение ожидает.Как только это сообщение было получено приложением, я создаю новый объект соединения, настраиваю все обработчики событий для нового соединения и заменяю статическое свойство, используемое приложением, оборачивая статический объект в блок блокировки, пока яизменить соединение.
Код PSEUDO
Извлечь массив объектов из хранилища параметров
Loopчерез каждый объект в массиве и добавьте в коллекцию конечных точек новый объект StackExchange.Redis.ConfigurationOptions
Установите локальную переменную для существующего статического объекта соединения
Установить объект статического соединения на новый объект StackExchange.Redis.ConnectionMultiplexer, передав в новый объект StackExchange.Redis.ConfigurationOptions
Переназначить все подписки на новое соединение
Переназначить все события на новое соединение
Lock и переназначить статический объект базы данных StackExchange.Redis.IDatabase, который используется методами save и get, для дескриптора нового подключения к используемой базе данных.
Есть ли лучшийспособ сделать это с помощью пакета StackExchange.Redis?