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&amp;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
Другие вопросы по тегам