Балансировщик нагрузки с кластером Rabbitmq и пружинным AMQP - PullRequest
0 голосов
/ 14 сентября 2018

Я хочу настроить кластер rabbitmq за балансировщиком нагрузки и подключиться к нему с помощью пружинного amqp. Вопросы:

  1. Нужно ли Spring-клиенту знать адрес каждого узла в кластере RMQ или ему достаточно знать только адрес балансировщика нагрузки.

  2. Если Spring-клиент знает только о балансировщике нагрузки, как он будет поддерживать фабрики соединений / соединений для каждого узла в кластере.

  3. Есть ли пример кода, который показывает, как заставить клиента Spring работать с балансировщиком нагрузки.

1 Ответ

0 голосов
/ 14 сентября 2018

Требуется только балансировщик нагрузки;однако Spring AMQP поддерживает долгоживущее совместно используемое соединение, поэтому балансировщик нагрузки обычно не приносит большой пользы, если у вас нет нескольких приложений.

С одним приложением (с одной фабрикой соединений) вы будете толькоподключен к одному брокеру.

Уточнение

См. документацию .

Начиная с версии 1.3, CachingConnectionFactoryможно настроить для кэширования соединений, а также только каналов.В этом случае каждый вызов createConnection () создает новое соединение (или извлекает свободное из кеша).Закрытие соединения возвращает его в кеш (если размер кеша не достигнут).Каналы, созданные на таких соединениях, тоже кэшируются.Использование отдельных соединений может быть полезно в некоторых средах, таких как использование кластера высокой доступности в сочетании с балансировщиком нагрузки для подключения к различным элементам кластера.Установите для cacheMode значение CacheMode.CONNECTION.

По умолчанию все компоненты (контейнеры прослушивателей, RabbitTemplates) совместно используют одно соединение с посредником.

Начиная с версии 2.0.2, RabbitTemplate имеет свойство usePublisherConnection;если для этого параметра установлено значение true, издатели будут использовать отдельное соединение с контейнерами слушателя - обычно рекомендуется избегать заблокированного соединения издателя, не позволяющего потребителям получать сообщения.

Как показано в цитате, использованиеодиночные (или 2) соединения управляются режимом кэширования фабрики соединений.

Установка режима кэширования на CONNECTION означает, что каждый компонент (потребитель контейнера слушателя, RabbitTemplate) получает свое собственное соединение.На практике будет только одно или два соединения с издателем, потому что операции публикации, как правило, недолговечны, и соединение кэшируется для повторного использования.Вы можете получить одно или два соединения с издателем, если выполняются параллельные операции публикации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...