ActiveMQ 5.x использует conf/activemq.xml
, но ActiveMQ Artemis использует etc/broker.xml
, так что то, что вы видите там, ожидается. В конечном счете проблема здесь, как указано в ответе, который вы цитировали , заключается в том, что либо уже запущен брокер, либо запущена какая-либо другая служба, использующая порт (ы), к которым ActiveMQ хочет привязаться.
ActiveMQ Artemis по умолчанию связывается с несколькими портами. Тезисы определены в etc/broker.xml
. Вот конфигурация по умолчанию:
<acceptors>
<acceptor name="artemis">tcp://0.0.0.0:61616??anycastPrefix=jms.queue.;multicastPrefix=jms.topic.;tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300</acceptor>
<acceptor name="amqp">tcp://0.0.0.0:5672?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=AMQP;useEpoll=true;amqpCredits=1000;amqpLowCredits=300</acceptor>
<acceptor name="stomp">tcp://0.0.0.0:61613?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=STOMP;useEpoll=true</acceptor>
<acceptor name="hornetq">tcp://0.0.0.0:5445?protocols=HORNETQ,STOMP;useEpoll=true</acceptor>
<acceptor name="mqtt">tcp://0.0.0.0:1883?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=MQTT;useEpoll=true</acceptor>
</acceptors>
Итак, по умолчанию брокер связывается с этими портами:
- 61616
- 5672
- 61613
- 5445
- 1883
Любой из этих портов может уже использоваться при запуске брокера. Вероятно, вам не нужен ваш брокер для прослушивания всех этих портов, поэтому я рекомендую отключить все, кроме того, что вам абсолютно необходимо. Если это решит вашу проблему, то отлично, но если нет, вы можете использовать процесс исключения, чтобы найти тот, который уже используется, или одну из команд из другого ответа (например, netstat
, fuser
, и др c.). После того, как вы определили проблемный порт c, вы можете либо изменить broker.xml
на другой порт, либо остановить процесс, который уже использует его.
Если действительно верно, что ни один из портов не является использование этого означает, что есть ошибка в основной части сетевого стека JVM, потому что именно отсюда и происходит исключение. Я предполагаю, что такой ошибки нет, поэтому я рекомендую использовать процесс исключения, о котором я упоминал ранее. Попробуйте закомментировать все элементы acceptor
и запустить брокера. Поскольку брокер не будет пытаться связываться с какими-либо портами, не должно быть никаких исключений. Затем остановите посредник и добавьте один из элементов acceptor
обратно и перезапустите посредник. Делайте это для каждого acceptor
до тех пор, пока проблема не появится снова, и в этот момент вы можете изменить конфигурацию брокера для использования другого порта.