ActiveMQ не распознает Stomp: Транспортная схема НЕ распознается: [stomp+ssl]
Я пытаюсь настроить mcollective/activemq на puppetmaster (марионетка с открытым исходным кодом). У меня проблема, когда ActiveMQ не распознает протокол Stomp. Вот соответствующий фрагмент в моем /etc/activemq/instances-enabled/activemq/activemq.xml
файл, который должен включить stomp+ssl:
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
<transportConnector name="stomp+ssl" uri="stomp+ssl://0.0.0.0:61614?needClientAuth=true&transport.enabledProtocols=TLSv1,TLSv1.1,TLSv1.2"/>
</transportConnectors>
Когда я запускаю ActiveMQ через service activemq start
Я заметил, что демон не работает (я не вижу его как процесс). Затем я попытался запустить service activemq console activemq
и, похоже, проблема в том, что он не может найти схему транспорта stomp. Вот первая ошибка, которую я вижу в выходных данных (и эта ошибка сохраняется во всех выходных данных):
ОШИБКА | Не удалось запустить Apache ActiveMQ ([localhost, ID:my-servers-hostname.example.com-40447-1475514312306-0:1], java.io.IOException: не удалось зарегистрировать транспортный соединитель в JMX: java.io.IOException: Транспортная схема НЕ опознана: [stomp + ssl])
ActiveMQ распознает OpenWire просто отлично. При использовании только openwire+ssl, без использования stomp+ssl, демон ActiveMQ запускается нормально, без ошибок. Тем не менее, когда я пытаюсь запустить mco find
, Я получаю сообщение об ошибке, потому что кажется, что mco все еще пытается использовать stomp+ssl (а в ActiveMQ включен только openwire+ssl):
ошибка 2016/10/03 17:26:59: activemq.rb:149: в `on_ssl_connectfail'создание сеанса SSL с помощью stomp+ssl://mcollective@localhost:61614 не удалось: соединение отклонено - connect(2) для"localhost" порт 61614
Возможно, мне нужно настроить конфигурацию mco для использования openwire вместо stomp? Я не был уверен, где или в каком файле будет эта конфигурация. Не уверен, почему он не распознает stomp, но мне было интересно, какие у меня варианты здесь. Можно ли даже использовать MCollective/ActiveMQ, используя только openwire+ssl, или использование stomp является обязательным требованием, если я хочу использовать mco? Я не думаю, что это проблема портов, так как соответствующие порты открыты на сервере, я считаю.
Вот соответствующие пакеты / версии, установленные на моем компьютере:
OS: Ubuntu 16.04 (xenial)
puppet: 4.7.0
ActiveMQ: 5.13.2
ruby-stomp: 1.3.5-1
MCollective (mco) version: 2.9.0
2 ответа
Я столкнулся с той же проблемой со встроенным сервером ActiveMQ в моем проекте. Оказывается, мне нужно было добавить следующие зависимости в мой pom.
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-stomp</artifactId> <version>5.15.0</version> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-kahadb-store</artifactId> <version>5.15.0</version> </dependency>
В вашем случае, я думаю, вам нужно достать эти 2 баночки и добавить их в вашу установку ActiveMQ.
В activemq
Пакет, предоставляемый библиотекой Ubuntu 16+, не включал транспорт. Я не знаю почему.
Yoy можете скачать его вручную и поместить в /usr/share/activemq/lib
:
cd /usr/share/activemq/lib
# check your actviemq version before (apt-cache policy activemq) and use the relevant version of library.
wget https://repository.apache.org/content/repositories/releases/org/apache/activemq/activemq-stomp/5.13.5/activemq-stomp-5.13.5.jar
service activemq restart