ArtemisMQ Connector - PullRequest
       10

ArtemisMQ Connector

1 голос
/ 16 октября 2019

Я новичок в ArtemisMQ и абсолютно не понимаю смысла connectors.

Почему connector необходимо, так как мы уже указываем accepter Broker Server в broker.xml -> мы знаем, на какой порт (это accepter порт) отправлять запрос, если мы хотимподключиться к этому серверу. Даже если этот сервер является частью кластера, какова роль connector? Также есть информация из другой части документации о "кластерах" , но есть слова о кластерах соединениях:

Кластеры формируются каждым узломобъявление соединений кластера с другими узлами в основном файле конфигурации broker.xml. Когда узел формирует соединение кластера с другим узлом, внутренне он создает соединение основного моста (как описано в разделе Основные мосты) между ним и другим узлом, это делается прозрачно за кулисами - вам не нужно объявлять явный мостдля каждого узла. Эти соединения кластера позволяют сообщениям проходить между узлами кластера для балансировки нагрузки.

Из документации "Общие сведения о соединителях" :

соединителииспользуется клиентом для определения того, как он подключается к серверу.

Что означает «определить как»?

Я уже прочитал и еще один вопрос о разъеме , но он мне не помогает.

Дополнительные вопросы:

  • Естьразъем всегда такой же, как и у акцептора (я скачал несколько официальных примеров, и у всех (которые я видел) есть и тот же акцептор и разъем)?
  • Какую информацию инкапсулирует разъем, если он состоит только изхост + порт (и он такой же, как и у акцептора (если мы опускаем, что хост-акцептор может мне 0.0.0. или localhost))?
  • Почему у автономного брокера есть коннектор, например, при создании по умолчанию ./artemis create?
  • Что мы должны написать в разъеме?
  • Можете ли вы привести простой пример, когда акцептор и разъем отличаются?

1 Ответ

0 голосов
/ 16 октября 2019

Обратите внимание на два важных момента:

  • A connector - это не обязательно , в зависимости от вашего варианта использования. Вы обнаружите, что по умолчанию broker.xml не имеет определенных элементов connector. Например, если вы просто запустите ./artemis create, сгенерированный broker.xml будет , а не содержит какие-либо элементы connector.
  • Приведенная вами документация довольно старая (с самого первого выпускаArtemis). Вы можете извлечь пользу из прочтения последней документации , которая была обновлена ​​для ясности во многих местах.

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

Теперь по вашим индивидуальным вопросам ...

Даже если этот сервер является частью кластера, какова роль соединителя?

В случае кластера, использующего broadcast-group и discovery-group, каждый узел в кластере должен передать всем другим узлам в кластере, как другие узлы могут подключаться ксам. Это делается путем трансляции connector, на который есть ссылка в конфигурации cluster-connection. Когда другие узлы в кластере получают эту широковещательную рассылку, они берут информацию connector и используют ее для подключения обратно к узлу, который первоначально транслировал ее. Таким образом, узлы могут динамически обнаруживать и соединяться друг с другом. Также стоит отметить, что в этом случае конфигурация connector будет по существу отражать одну из конфигураций acceptor брокера (поскольку connector будет использоваться другими узлами для подключения к acceptor широковещательного узла). Это обсуждается далее в документации кластера .

... коннекторы используются клиентом для определения того, как он подключается к серверу ...

Этот фрагмент документации, который вы цитировали, является точным, но может быть немного запутанным. Имейте в виду, что клиент может работать где угодно, даже внутри самого брокера. В случае базовых мостов и соединений кластера в брокере работает клиент, который использует connector, чтобы определить, как подключиться к другому брокеру. Для чего стоит обновленная документация не имеет этой конкретной формулировки.

Что означает «определить, как»?

A connector - это URL-адрес, который клиент должен подключить к брокеру. URL может просто включать хост и порт, или он может содержать множество деталей конфигурации для соединения (например, SSL config).

Всегда ли соединитель совпадает с принимающим ...?

Нет, не всегда . В случае кластера они будут одинаковыми (или очень близкими) по причинам, которые я уже обрисовал, но в случае моста они не будут одинаковыми.

Какая информациясоединитель инкапсулирует ..?

См. выше.

Почему автономный брокер имеет соединитель, например, при создании по умолчанию ./artemis create?

Это не так. См. Выше.

Что мы должны написать в соединителе?

URL-адрес, необходимый для подключения.

Можете ли вы привести простой пример, когдаПриемник и разъем разные?

Как уже упоминалось ранее, мост является примером, где используются разные приемники и разъемы. ActiveMQ Artemis поставляется с примером «core-bridge» в каталоге examples/features/standard, который демонстрирует различные акцепторы и соединители. В примере участвуют 2 разных брокера, один из которых имеет основной мост, настроенный для отправки сообщений другому брокеру. Вот broker.xml с определенным мостом. Вы можете видеть прослушивающий приемник на localhost:61616 и разъем для localhost:61617. Этот соединитель указывает на другого брокера, который прослушивает localhost:61617.

...