【问题标题】:Unable to connect to my Docker RabbitMQ using Node.js无法使用 Node.js 连接到我的 Docker RabbitMQ
【发布时间】:2019-01-30 10:32:04
【问题描述】:

我已经安装了一个 RabbitMQ docker 镜像并让它运行起来。 我的 docker 管理控制台也在 8080 端口上运行。

我使用 docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:3 运行 docker

我正在尝试运行以下节点代码;

var amqp = require('amqplib/callback_api');

var connection = amqp.connect('amqp://localhost:5672',function(err,conn){
    console.log(conn); });

但是,conn 始终是未定义的。

我试过了;

amqp://localhost:5672
amqp://localhost:15672
amqp://localhost
amqp://localhost:8080

但它们都不起作用。

我的 rabbitmq 经理说 amqp 正在监听 5672。

除了默认访客帐户之外,我没有任何其他帐户。

我没有在管理员模式下运行 Visual Studio 代码。

我得到的错误是;

错误:打开握手期间套接字突然关闭 在 Socket.endWhileOpening (C:\Users\sgrieger\Documents\Development\rabbitmq\node_modules\amqplib\lib\connection.js:259:17) 在 emitNone (events.js:111:20) 在 Socket.emit (events.js:208:7) 在 endReadableNT (_stream_readable.js:1064:12) 在 _combinedTickCallback (内部/进程/next_tick.js:138:11) 在 process._tickCallback (internal/process/next_tick.js:180:9)

【问题讨论】:

  • 你有 docker 文件吗?你用的是什么图片?如何启动 docker 镜像?
  • @RobertMoskal,是的,我有一个 docker 文件,否则我不会运行它。我今天早上得到了图像,所以它是最新的 3.7.7。 docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:3
  • RabbitMQ 正在侦听容器内部的 5672 端口。您必须将主机端口的端口映射到容器的端口。 docker run -d -p 5672:5672 --hostname my-rabbit --name some-rabbit rabbitmq:3
  • @Rickkwa。极好的!谢谢你。如果您想在答案中写下,我会接受。

标签: node.js docker rabbitmq


【解决方案1】:

运行 docker 映像时,您不会暴露主机上的端口。您可以使用-p 开关做到这一点:

 docker run -d --hostname my-rabbit -p 5672:5672 --name some-rabbit rabbitmq:3 

【讨论】:

  • 你投了反对票吗?如果你这样做没问题,我只是想知道为什么。
  • 因为它不完整。输入运行命令,我会投票赞成。
  • 完成。抱歉,我错过了那个。
猜你喜欢
  • 2018-08-18
  • 2019-12-10
  • 2017-07-31
  • 2020-08-11
  • 1970-01-01
  • 2019-04-01
  • 1970-01-01
  • 2017-12-20
  • 1970-01-01
相关资源
最近更新 更多