Функция JGroups для вывода списка доступных групп или кластеров

У меня есть ряд клиентов, которые общаются друг с другом с помощью библиотеки JGroups, они в основном создают канал связи, связанный с именем кластера:

communicationChannel = new JChannel(AutoDiscovery.class.getResource("/resource/udp.xml"));
communicationChannel.connect("cluster1");

Теперь я хотел бы, чтобы они сначала перечислили доступные кластеры для подключения и позволили пользователю решать, к какому кластеру подключаться, без указания имени кластера в коде, как указано выше. Очевидно, что API имеет getName(), которая возвращает логическое имя канала, если установлено, но нет способа извлечь настроенные кластеры.

Хотя я использую org.jgroups.Message.getHeaders() и читая заголовок, я получаю активные кластеры, но ничего. Любая помощь, пожалуйста?

1 ответ

Там нет никакого способа найти доступные в настоящее время кластеры, я предлагаю сохранить некоторое дополнительное состояние, которое хранит (в памяти) все имена кластеров и связанные с ними конфигурации.

Однако однажды вы можете разработать собственный протокол (вставить его под GMS), который выполняет следующие действия: - Перехватывает (Event evt): if evt.getType() == Event.CONNECT*** (4 события), захватите имя кластера ((String)evt.getArg()) и добавьте его в набор - Улавливает (Event evt): если evt.getType() == Event.DISCONNECT, захватите текущее имя кластера и удалите его из задавать

Это не дает вам информацию о конфигурации; Вы также можете получить это, если вы подклассы JChannel и перезаписали connectXXX() и disconnect ().

Другие вопросы по тегам