首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring/RabbitMQ教程的Docker映像导致连接拒绝

Spring/RabbitMQ教程的Docker映像导致连接拒绝
EN

Stack Overflow用户
提问于 2017-06-28 13:33:23
回答 2查看 3.8K关注 0票数 4

我正在这里学习Spring教程;

用RabbitMQ发送消息

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

Spring RabbitMQ教程导致连接拒绝错误

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

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

代码语言:javascript
复制
rabbitmq:
image: rabbitmq:management
ports:
  - "5672:5672"
  - "15672:15672"

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

当我运行docker-compose up时,我得到以下控制台输出;

代码语言:javascript
复制
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

...plus大量的信息报告.这使我相信RabbitMQ服务器已经启动并运行,但显然没有,因为我无法连接。

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

为什么Docker会在本教程中提到呢?docker-compose.yml似乎不像本教程所建议的那样。

这个文件实际上在这里做什么,为了本教程的目的,我们将如何在一个码头容器中运行RabbitMQ?端口号有问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-03 10:02:47

结果发现问题是与Spring RabbitMQ模板连接信息有关。

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

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

代码语言:javascript
复制
docker-machine ip

这会给出IP地址。我将以下参数添加到application.properties文件中;

代码语言:javascript
复制
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。

票数 4
EN

Stack Overflow用户

发布于 2018-08-02 12:34:23

据我所知,不可能一直知道IP地址,您应该提供DNS,它是您的docker-compose文件中定义的rabbitmq服务器的名称,而不是ip地址。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44804018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档