1.) Я не могу рекомендовать топологию. Этот выбор зависит от количества прыжков (между брокером, в котором сообщения поступают в кластер, и брокером, с которым соединяется потребитель), которые вы можете принять. В сценарии интенсивного трафика каждый прыжок увеличивает нагрузку на сеть.
В моей компании мы используем сеть гиперкубов (каждый брокер знает каждого другого брокера), и она прекрасно работает.
Как правило, вы должны убедиться, что конфигурации вашего узла максимально схожи. Использование дуплекса гарантирует, что у вас будет меньше соединений для настройки (поскольку соединение от B до A уже является частью дуплексного соединения от A до B), но оно вносит большое количество различий в ваш файл конфигурации.
Лично я создал свой собственный стартовый скрипт для ActiveMQ, который автоматически генерировал конфигурацию соединения на основе DNS-имен моего кластера (mycluster-01 до 06).
2.) Да. Вы можете добавить? Randomize = false, если хотите убедиться, что клиент использует первую запись в списке.
3.) Повторяющиеся записи могут возникать в случае сбоев во время транспортировки сообщений или в условиях гонки во время большой нагрузки. Как правило, только одно сообщение принадлежит одному брокеру.
4.) Не устанавливайте сетевые разъемы между ведущими и ведомыми устройствами (ДЕЙСТВИТЕЛЬНО НЕ). Используйте функцию Master Slave в ActiveMQ и настройте мастер для каждого слэйва (вам не нужно ничего настраивать на мастерах). Для всех мастеров настройте NetworkConnections для других мастеров с переключением на их подчиненные устройства)
http://activemq.apache.org/pure-master-slave.html