Связь между двумя независимыми брокерами осуществляется с помощью моста. Карафы подключенные к одному брокеру далее будут именоваться шиной.

image::Route-in-different-esb.png[Прохождение пакета через группу и мост]

== Установка и настройка

Установка модуля происходит через фичу:

* _feature:install bridge_

Фича включена в общий установочный скрипт и будет устанавливаться вместе с остальными модулями. Во время установки фичи в караф копируются файлы конфигурации:

* _ru.entaxy.esb.system.bridge.cfg (основная конфигурация)_

=== ru.entaxy.esb.system.bridge.cfg (основная конфигурация)
[source,properties]
----
# имя локальной шины(<node_name>)
jms.local=test1
# значение true - мост текущего узла работает в пассивном режиме,
# т.е. сообщения для соответствующего удалённого узла складываются в очередь на локальном брокере,
# из которой уже читает подключаемый узел (локальный брокер должен быть доступен для соединения)
# По умолчанию false - активный режим, запись сообщения идёт сразу в очередь на удалённом брокере,
# подключаемого узла (брокеры по обе стороны моста должны быть доступны)
jms.local.master=false
# имена удаленных шин, задается через запятую(<node_name>,<node_name>)
jms.remote.list=test2

# адреса брокера, задаются чеерез запятую(jms.url.<node_name>)
jms.url.test1=192.168.122.81:61616,192.168.122.82:61616
# логин для подключения к брокеру(jms.username.<node_name>)
jms.username.test1=input
# пароль для подключения к брокеру(jms.password.<node_name>)
jms.password.test1=input
# протокол для передачи сообщений внутри шины(jms.protocol.inner.esb.<node_name>)
# для корректной работы синхронного режима передачи сообщений: необходимо следить
# за одинаковым значением данного параметра в мосту и в самой шине(ru.entaxy.esb.cfg)
# возможные значения tcp, amqp
jms.protocol.inner.esb.test1=tcp
# протокол для передачи сообщений между шинами(jms.protocol.bridge.esb.<node_name>)
# для корректной работы синхронного режима передачи сообщений: необходимо следить
# за одинаковым значением данного параметра во всех подключенных шинах
# возможные значения tcp, amqp
jms.protocol.bridge.test1=amqp

# адреса брокера, задаются чеерез запятую(jms.url.<node_name>)
jms.url.test2=localhost:61616
# логин для подключения к брокеру(jms.username.<node_name>)
jms.username.test2=input
# пароль для подключения к брокеру(jms.password.<node_name>)
jms.password.test2=input
# jms.master.<node_name> - выставляем в true, когда соответствующий узел настроен в пассивный режим,
# т.е. для него jms.local.master = true (брокер должен быть доступен для соединения)
jms.master.test2=true
# протокол для передачи сообщений внутри шины(jms.protocol.inner.esb.<node_name>)
# для корректной работы синхронного режима передачи сообщений: необходимо следить
# за одинаковым значением данного параметра в мосту и в самой шине(ru.entaxy.esb.cfg)
# возможные значения tcp, amqp
jms.protocol.inner.esb.test2=tcp
# протокол для передачи сообщений между шинами(jms.protocol.bridge.esb.<node_name>)
# для корректной работы синхронного режима передачи сообщений: необходимо следить
# за одинаковым значением данного параметра во всех подключенных шинах
# возможные значения tcp, amqp
jms.protocol.bridge.test2=amqp

# максимальное колчичество попыток отправить сообщение в очередь
# почитать подробнее можно в https://camel.apache.org/components/latest/eips/dead-letter-channel.html#deadLetterChannel-Redelivery
redelivery.maximumRedeliveries=-1
# время между попытками отправить сообщение в очередь
redelivery.redeliveryDelay=5000
# экспоненциальный рост времени между попытками отпрвки сообщений в очередь
redelivery.useExponentialBackOff=true

queue.sender.concurrentConsumers=1
queue.receiver.concurrentConsumers=1
----



