我有一个与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
答案 0 :(得分:3)
关于这是如何发生的,没有足够的上下文,所以我做一些假设:
amqplib
进行连接。 (不是假设)因此,您要做的第一件事就是创建一个用户(如果尚未创建的话)。
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
)。
使用下面的字符串而不是amqp://localhost
amqp://admin:password@your.server.ip.address/vhost_name
您可以将this example(或任何其他示例)用于其余的事情...
我希望这会有所帮助!
答案 1 :(得分:0)
转到rabbitmq仪表板>单击管理菜单>选择要连接的用户>单击设置权限按钮>重新启动服务器