当我尝试使用自定义端口从java连接时,Docker中的RabbitMQ抛出异常

33qvvth1  于 2022-12-10  发布在  Java
关注(0)|答案(1)|浏览(121)

我使用以下命令在Docker中运行RabbitMQ:

docker run --rm -it --hostname my-rabbit -p 15672:15672 -p 5672:5672 rabbitmq:3-management

它工作,我可以连接到RabitMq从java:

ConnectionFactory factory = new ConnectionFactory();
factory.setUsername("guest");
factory.setPassword("guest");
Connection connection = factory.newConnection("http://localhost:5672");

但我需要改变端口,我这样做:

docker run --rm -it --hostname my-rabbit -p 15673:15672 -p 5673:5672 rabbitmq:3-management

当我打开http://localhost:15673/时-它工作正常。我看到管理控制台。但当我尝试连接时

ConnectionFactory factory = new ConnectionFactory();
    factory.setUsername("guest");
    factory.setPassword("guest");
    Connection connection = factory.newConnection("http://localhost:5673");

我得到一个异常:

Exception in thread "main" java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
    at java.net.Socket.connect(Socket.java:606)
    at com.rabbitmq.client.impl.SocketFrameHandlerFactory.create(SocketFrameHandlerFactory.java:59)
    at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:63)
    at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.init(AutorecoveringConnection.java:160)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1216)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1173)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1310)
    at com.project.Main.main(Main.java:14)

编辑:当我使用端口5672没有改变,我看到这个(也许它可以帮助)

nbysray5

nbysray51#

我把代码改成了这个,它工作了。谢谢RabbitMQ这么明显的代码!

ConnectionFactory factory = new ConnectionFactory();
    factory.setPort(5673);
    factory.setHost("localhost");
    factory.setUsername("guest");
    factory.setPassword("guest");
    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();

相关问题