问题描述
在尝试使用"bin\win64\activemq.bat"启动apache-activemq-5.18.2时,出现了以下错误:
jvm 1 | ERROR | Failed to start Apache ActiveMQ (localhost, ID:)
jvm 1 | java.io.IOException: Transport Connector could not be registered in JMX: java.io.IOException: Failed to bind to server socket: mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600 due to: java.net.BindException: Address already in use: bind
原因分析
错误原因是由于ActiveMQ无法将mqtt://0.0.0.0:1883端口绑定,因为该端口已经被其他进程占用。但是在命令行中输入以下命令并没有返回结果:
netstat -ano | findstr 1883
解决方案
解决方法是修改conf\activemq.xml
文件,找到以下部分:
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
将端口号由1883改为18833:
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:18833?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
保存文件并重新启动ActiveMQ,启动成功后将会看到以下信息:
jvm 1 | INFO | ActiveMQ WebConsole available at http://127.0.0.1:8161/
jvm 1 | INFO | ActiveMQ Jolokia REST API available at http://127.0.0.1:8161/api/jolokia/
经过修改端口号重新启动后,ActiveMQ启动成功。