Mensaje de error
Exception in thread "main" javax.jms.JMSException: Could not connect to broker URL: nio://192.168.56.10:61618. Reason: java.net.ConnectException: Connection refused: no further information
at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:36)
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:374)
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:304)
at org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:244)
at JMSProduce.main(JMSProduce.java:19)
Caused by: java.net.ConnectException: Connection refused: no further information
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:111)
at org.apache.activemq.transport.tcp.TcpTransport.connect(TcpTransport.java:525)
at org.apache.activemq.transport.nio.NIOTransport.doStart(NIOTransport.java:174)
at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:55)
at org.apache.activemq.transport.AbstractInactivityMonitor.start(AbstractInactivityMonitor.java:169)
at org.apache.activemq.transport.InactivityMonitor.start(InactivityMonitor.java:52)
at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:64)
at org.apache.activemq.transport.WireFormatNegotiator.start(WireFormatNegotiator.java:72)
at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:64)
at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:64)
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:354)
... 3 more
Process finished with exit code 1
la razón:
Debido a que la imagen de activemq configurada por Docker se extrae del almacén remoto de Docker, los puertos externos configurados al principio son fijos y la asignación de puertos de todos los protocolos es 61616.
Instrucciones de configuración:
docker run -d --name myactivemq -p 61616:61616 -p 8162:8161 webcenter/activemq
De las instrucciones anteriores, podemos ver que solo configuramos dos puertos básicos. 61616 es el puerto que resuelve tcp.
A través del comando docker port myactivemq, podemos ver el puerto mapeado que configuramos.
Solo:
61616/tcp -> 0.0.0.0:61616
8161/tcp -> 0.0.0.0:8162
Solución (1):
- Eliminar la imagen anterior: método
- Tira del espejo de nuevo
docker pull webcenter/activemq
- Iniciar la asignación de puertos de configuración
docker run -d --name myactivemq -p 61616:61616 -p 8162:8161 -p 61618:61618 -p 61608:61608 webcenter/activemq
prueba:
docker port myactivemq #容器名称
Solución (dos):
- Eliminar el contenedor anterior
docker rm myactivemq
docker rm: elimina uno o más contenedores
docker rmi: eliminar una o más imágenes
- Reinicie el nuevo contenedor
docker run -d --name myactivemq -p 61616:61616 -p 8162:8161 -p 61618:61618 -p 61608:61608 webcenter/activemq
¡Error resuelto! ! !