RabbitMQ Java 客户端:连接被拒绝
RabbitMQ Java client: Connection refused
我在 WSL2
中有一张 rabbitmq:management
docker 图片 运行
Note that I do not have Docker Desktop installed! I am running docker inside WSL2, without Docker Desktop
我可以访问 localhost:15672
、127.0.0.1:15672
和 [::1]:15672
以毫无问题地访问管理界面,因此从我的浏览器到 docker 服务的主要连接在 WSL2 中工作。
但是,在尝试连接 RabbitMQ Java 客户端库时,我总是会遇到 connection refused
错误:
try {
var port = Env.get(EnvVars.EVENTING_PORT, "5672");
var host = Env.get(EnvVars.EVENTING_HOST, "localhost");
var factory = new ConnectionFactory();
factory.setHost(host);
factory.setPort(Integer.parseInt(port));
LOG.info("Connecting on [{}:{}]", host, port);
connection = factory.newConnection();
} catch (Exception exc) {
LOG.error("Could not connect", exc);
}
异常来自 java.net
,所以一定是某种网络错误。
但是:我在同一个 WSL2 docker 运行 中也有 redis,我可以通过 localhost:6937
连接到它,没有任何问题。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
47a58db1aa67 rabbitmq:management "docker-entrypoint.s…" 18 minutes ago Up 18 minutes 4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15671-15672->15671-15672/tcp, :::15671-15672->15671-15672/tcp 1264-services_rmq_1
8a792b0d0121 redis:4 "docker-entrypoint.s…" 18 minutes ago Up 18 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp 1264-services_redis_1
如何解决此问题,以便从 java 客户端库连接到 rabbitmq,按预期工作?
您的 rabbitmq-management 并未在 VM 上的本地主机上侦听 5672,而是仅在容器中侦听。为了解决问题 运行 rabbitmq 容器与选项 -p 5671-5672:5671-5672
我在 WSL2
中有一张rabbitmq:management
docker 图片 运行
Note that I do not have Docker Desktop installed! I am running docker inside WSL2, without Docker Desktop
我可以访问 localhost:15672
、127.0.0.1:15672
和 [::1]:15672
以毫无问题地访问管理界面,因此从我的浏览器到 docker 服务的主要连接在 WSL2 中工作。
但是,在尝试连接 RabbitMQ Java 客户端库时,我总是会遇到 connection refused
错误:
try {
var port = Env.get(EnvVars.EVENTING_PORT, "5672");
var host = Env.get(EnvVars.EVENTING_HOST, "localhost");
var factory = new ConnectionFactory();
factory.setHost(host);
factory.setPort(Integer.parseInt(port));
LOG.info("Connecting on [{}:{}]", host, port);
connection = factory.newConnection();
} catch (Exception exc) {
LOG.error("Could not connect", exc);
}
异常来自 java.net
,所以一定是某种网络错误。
但是:我在同一个 WSL2 docker 运行 中也有 redis,我可以通过 localhost:6937
连接到它,没有任何问题。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
47a58db1aa67 rabbitmq:management "docker-entrypoint.s…" 18 minutes ago Up 18 minutes 4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15671-15672->15671-15672/tcp, :::15671-15672->15671-15672/tcp 1264-services_rmq_1
8a792b0d0121 redis:4 "docker-entrypoint.s…" 18 minutes ago Up 18 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp 1264-services_redis_1
如何解决此问题,以便从 java 客户端库连接到 rabbitmq,按预期工作?
您的 rabbitmq-management 并未在 VM 上的本地主机上侦听 5672,而是仅在容器中侦听。为了解决问题 运行 rabbitmq 容器与选项 -p 5671-5672:5671-5672