ion*_*sed 4 rabbitmq spring-boot docker-compose
我正在这里学习 Spring 教程;
我发现了这个问题,但它没有解决我对docker-compose.yml
教程中找到的文件的查询;
我已经完成了应用程序实际运行之前的所有必要步骤,此时我收到了ConnectException
异常,表明服务器未运行或运行不正确。
教程中指定的docker-compose.yml文件如下;
rabbitmq:
image: rabbitmq:management
ports:
- "5672:5672"
- "15672:15672"
Run Code Online (Sandbox Code Playgroud)
基本上我不确定这个 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
Run Code Online (Sandbox Code Playgroud)
...加上大量信息报告。这让我相信 RabbitMQ 服务器已启动并正在运行,但显然没有,因为我无法连接。
我让它工作的唯一方法是手动安装 Erlang 和 RabbitMQ(在 Windows 系统上),这似乎让我完成了教程。
为什么本教程中甚至提到了 Docker?似乎docker-compose.yml
没有按照教程的建议进行操作。
该文件实际上在这里做什么以及如何在 Docker 容器中运行 RabbitMQ 来实现本教程的目的?这是端口号的问题吗?
事实证明,问题出在 Spring RabbitMQ 模板连接信息上。
Spring 教程假设使用正常的手动安装 RabbitMQ(加上 Erlang),并且 RabbitMQ Spring 模板使用一些默认连接参数,这些参数与docker-compose
教程中指定的文件中的图像不兼容。
为了解决这个问题,我需要添加一个 Springapplication.properties
文件并将其添加到resources
我的应用程序目录结构中的文件夹中。接下来,我需要使用以下命令查找 Docker 容器的 IP 地址;
docker-machine ip
Run Code Online (Sandbox Code Playgroud)
这将给出 IP 地址。我将以下参数添加到文件中application.properties
;
spring.rabbitmq.host={docker-machine ip address}
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
Run Code Online (Sandbox Code Playgroud)
这里的端口、用户名和密码都是默认的,可以在RabbitMQ文档中找到。
通过这样做,我能够让我的应用程序正确连接到 Docker 容器中运行的 RabbitMQ 服务器。
Spring 教程似乎有点不完整,因为它没有告知读者在使用 RabbitMQ 文件时需要一些额外的步骤,而不是docker-compose
教程其余部分假设的手动安装 RabbitMQ。
归档时间: |
|
查看次数: |
3991 次 |
最近记录: |