Node.js连接失败,连接到RabbitMQ

时间:2018-01-29 08:22:18

标签: mysql node.js rabbitmq

我有一个与rabbitmq和mysql一起运行的node.js应用程序。 完成所有操作后,当我执行npm start

我已将用户管理员标记和权限指定为 rabbitmqctl set_permissions RABBIT_USERNAME"。" " " " *"

显示此错误:

> node app.js

13:43   
Started database log (Mon Jan 29 2018 13:43:42 GMT+0530 (IST))
13:43   
Started mailer log (Mon Jan 29 2018 13:43:44 GMT+0530 (IST))
13:43   
Started messaging log (Mon Jan 29 2018 13:43:44 GMT+0530 (IST))
13:43   
Started messaging log (Mon Jan 29 2018 13:43:44 GMT+0530 (IST))
13:43   
Started database log (Mon Jan 29 2018 13:43:44 GMT+0530 (IST))
13:43   
Started socket log (Mon Jan 29 2018 13:43:44 GMT+0530 (IST))
13:43   messaging:3000 is listening..
13:43   DB connected (7)
13:43   DB connected (6)
13:43   Error:



 Expected ConnectionOpenOk; got <ConnectionClose channel:0>
 Error: Expected ConnectionOpenOk; got <ConnectionClose channel:0>
    at /PATH/node_modules/amqplib/lib/connection.js:167:14
    at /PATH/node_modules/amqplib/lib/connection.js:159:12
    at Socket.recv (/PATH/node_modules/amqplib/lib/connection.js:497:12)
    at Object.onceWrapper (events.js:255:19)
    at Socket.emit (events.js:160:13)
    at emitReadable_ (_stream_readable.js:520:10)
    at emitReadable (_stream_readable.js:514:7)
    at addChunk (_stream_readable.js:280:7)
    at readableAddChunk (_stream_readable.js:256:11)
    at Socket.Readable.push (_stream_readable.js:213:10)
    at TCP.onread (net.js:599:20)

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! messaging@ start: `node app.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the messaging@ start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/mishal23/.npm/_logs/2018-01-29T08_13_45_095Z-debug.log

2 个答案:

答案 0 :(得分:3)

关于这是如何发生的,没有足够的上下文,所以我做一些假设:

  1. RabbitMQ不在本地安装,而是安装在某些服务器上。
  2. 您正在使用amqplib进行连接。 (不是假设
  3. 您尚未创建任何虚拟主机。

设置

因此,您要做的第一件事就是创建一个用户(如果尚未创建的话)。

sudo rabbitmqctl add_user admin password
sudo rabbitmqctl set_user_tags admin administrator

如果尚未启用管理仪表板,请运行此命令

sudo rabbitmq-plugins enable rabbitmq_management

默认情况下,它在端口15672上运行。因此,不要忘记打开该端口。您可以使用your.server.ip.address:15672访问此仪表板。

现在在此管理控制台中,转到Admin标签,然后在右侧,您会看到一个指向Virtual Hosts的链接。

将有一个名为/的虚拟主机和一个用户guest(没有本地主机就无法访问)。现在,创建一个新的虚拟主机,并检查它是否具有与刚才创建的用户相同的用户(在本例中为admin)。

连接到RabbitMQ服务器

使用下面的字符串而不是amqp://localhost

连接到服务器
amqp://admin:password@your.server.ip.address/vhost_name

您可以将this example(或任何其他示例)用于其余的事情...

我希望这会有所帮助!

答案 1 :(得分:0)

转到rabbitmq仪表板>单击管理菜单>选择要连接的用户>单击设置权限按钮>重新启动服务器