gpt4 book ai didi

spring-boot - Spring/RabbitMQ 教程的 Docker 镜像导致连接被拒绝

转载 作者:行者123 更新时间:2023-12-04 12:06:55 24 4
gpt4 key购买 nike

我正在这里学习 Spring 教程;

Messaging with RabbitMQ

我发现了这个问题,但它没有解决我对 docker-compose.yml 的疑问。在教程中找到的文件;

Spring RabbitMQ tutorial results in Connection Refused error

在应用程序实际运行之前,我已经完成了所有必要的步骤,此时我得到了 ConnectException表明服务器未运行或未正确运行的异常。

教程中指定的docker-compose.yml文件如下;

rabbitmq:
image: rabbitmq:management
ports:
- "5672:5672"
- "15672:15672"

基本上我不确定这个 docker-compose 文件实际上做了什么,因为它似乎没有像教程建议的那样设置 RabbitMQ 服务器(或者至少不是教程期望的方式)。我对 Docker 也很陌生,所以也许我认为这个文件会运行 RabbitMQ 服务器的新实例是错误的。

当我跑 docker-compose up我得到以下控制台输出;
rabbitmq_1  |
rabbitmq_1 | =INFO REPORT==== 28-Jun-2017::13:27:26 ===
rabbitmq_1 | Starting RabbitMQ 3.6.10 on Erlang 20.0-rc2
rabbitmq_1 | Copyright (C) 2007-2017 Pivotal Software, Inc.
rabbitmq_1 | Licensed under the MPL. See http://www.rabbitmq.com/
rabbitmq_1 |
rabbitmq_1 | RabbitMQ 3.6.10. Copyright (C) 2007-2017 Pivotal Software, Inc.
rabbitmq_1 | ## ## Licensed under the MPL. See http://www.rabbitmq.com/
rabbitmq_1 | ## ##
rabbitmq_1 | ########## Logs: tty
rabbitmq_1 | ###### ## tty
rabbitmq_1 | ##########
rabbitmq_1 | Starting broker...
rabbitmq_1 |
rabbitmq_1 | =INFO REPORT==== 28-Jun-2017::13:27:26 ===
rabbitmq_1 | node : rabbit@bd20dc3d3d2a
rabbitmq_1 | home dir : /var/lib/rabbitmq
rabbitmq_1 | config file(s) : /etc/rabbitmq/rabbitmq.config
rabbitmq_1 | cookie hash : DTVsmjdKvD5KtH0o/OLVJA==
rabbitmq_1 | log : tty
rabbitmq_1 | sasl log : tty
rabbitmq_1 | database dir : /var/lib/rabbitmq/mnesia/rabbit@bd20dc3d3d2a

...加上大量的 INFO 报告。这让我相信 RabbitMQ 服务器已启动并正在运行,但显然不是,因为我无法连接。

我让它工作的唯一方法是手动安装 Erlang 和 RabbitMQ(在 Windows 系统上),这似乎让我完成了教程。

为什么在本教程中甚至提到了 Docker? docker-compose.yml似乎没有按照教程的建议去做。

这个文件在这里实际上是做什么的,为了本教程的目的,如何在 docker 容器中运行 RabbitMQ?这是端口号的问题吗?

最佳答案

事实证明,问题出在 Spring RabbitMQ 模板连接信息上。

Spring 教程假设使用 RabbitMQ(加上 Erlang)的正常手动安装,RabbitMQ Spring 模板使用了一些与 docker-compose 中的镜像不兼容的默认连接参数。教程中指定的文件。

为了解决这个问题,我需要添加一个 Spring application.properties文件并将其添加到 resources我的应用程序目录结构中的文件夹。接下来我需要使用以下命令找到我的 Docker 容器的 IP 地址;

docker-machine ip

这将给出 IP 地址。我在 application.properties 中添加了以下参数文件;
spring.rabbitmq.host={docker-machine ip address}
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

这里的端口、用户名和密码都是默认值,可以在RabbitMQ文档中找到。

这样做我能够让我的应用程序正确连接到在 Docker 容器中运行的 RabbitMQ 服务器。

Spring 教程似乎有点不完整,因为它没有通知读者在使用 RabbitMQ 时需要一些额外的步骤 docker-compose本教程其余部分假设的 RabbitMQ 手动安装文件。

关于spring-boot - Spring/RabbitMQ 教程的 Docker 镜像导致连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44804018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com