Spring / RabbitMQ教程的Docker映像导致连接被拒绝
我在这里浏览Spring教程。
使用RabbitMQ进行消息传递
我找到了这个问题,但没有解决我对docker-compose.yml
本教程中找到的文件的查询;
在完成应用程序的实际运行之前,我已经完成了所有必要的步骤,这时我遇到了一些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教程似乎有些不完整,因为它没有通知读者在使用docker-compose
本教程其余部分假定的RabbitMQ手动安装时使用RabbitMQ
文件时需要一些额外的步骤。
以上是 Spring / RabbitMQ教程的Docker映像导致连接被拒绝 的全部内容, 来源链接: utcz.com/qa/428518.html