Por qué la configuración de activemq nio creada por Docker no puede asignar el puerto 61618

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 #容器名称

Inserte la descripción de la imagen aquí

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! ! !

Supongo que te gusta

Origin blog.csdn.net/weixin_44763595/article/details/109855004
Recomendado
Clasificación