首页 > 解决方案 > Docker 容器中的 RabbitMQ 不允许我的 Java 应用程序连接

问题描述

我在 Docker 容器中运行 RabbitMQ。除了 RabbitMQ 镜像,我还安装了 RabbitMQ 管理插件。

使用插件我创建了用户“执行者”。我将用户权限设置为

 
虚拟主机 /
配置正则表达式 .*
写正则表达式 .*
阅读正则表达式 .*

这是我的代码

public static void main(String[] argv)  throws Exception {
     String message;
     ConnectionFactory factory = new ConnectionFactory();
     factory.setHost(SERVER);
     factory.setUsername(RABBIT_USER);
     factory.setPassword(RABBIT_USER_PASSWORD);
     Connection connection = factory.newConnection();
     Channel channel = connection.createChannel();
     channel.queueDeclare(QUEUE_NAME, IS_DURABLE_QUEUE, false, false, null);

     message = argv.length==1?argv[0]:"Hello World!";
     channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
     System.out.println(" [x] Sent '" + message + "'");
     channel.close();
     connection.close();
}

当我运行这个应用程序时,我得到以下异常

Exception in thread "main" com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:362)
    at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:64)
    at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.init(AutorecoveringConnection.java:134)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:997)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:956)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:914)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1068)
    at ca.meh.hial.producer.Producer.main(Producer.java:24)

显然,由于身份验证问题,用户无法连接。

我不确定是否需要安装其他插件。还是我需要配置 Docker 容器来验证凭据?

标签: javadockerrabbitmq

解决方案


显然,您不能使用一个 Docker 容器中的管理控制台来管理另一个 Docker 容器中的 RabbitMQ。


推荐阅读