Node.js 倾听拉比狗的声音

Node.js 倾听拉比狗的声音,node.js,rabbitmq,Node.js,Rabbitmq,我有一个基本上将消息发布到rabbitmq队列的节点服务器和另一个基本使用它的节点js服务器。我想让使用者服务器在节点服务器发布新消息后立即侦听和处理队列中的消息。我正在为节点js的rabbitmq包使用ampqlib说明如何为rabbitmq队列创建使用者 像这样的东西可能有用。(未调试) const amqplib=require('amqplib') const queueName='tasks' 常量mqUrl=amqp://localhost' ... 异步函数使用(mqUrl、que

我有一个基本上将消息发布到rabbitmq队列的节点服务器和另一个基本使用它的节点js服务器。我想让使用者服务器在节点服务器发布新消息后立即侦听和处理队列中的消息。我正在为节点js的rabbitmq包使用ampqlib

说明如何为rabbitmq队列创建使用者

像这样的东西可能有用。(未调试)

const amqplib=require('amqplib')
const queueName='tasks'
常量mqUrl=amqp://localhost'
...
异步函数使用(mqUrl、queueName、dispatchFunction){
const conn=等待连接(mqUrl)
const channel=wait conn.createChannel()
const ok=wait channel.assertQueue(queueName)
while(true){
试一试{
const message=wait channel.consume(队列名称)
如果(消息!==null){
channel.ack(消息)
dispatchFunction(空,消息)
}
}捕捉(错误){
dispatchFunction(错误,空)
}
}
}
使用(mqUrl、队列名称、,
功能(错误、消息){
if(err)返回console.log(err)
/*对消息做些有用的事情*/
} )
.然后()
.catch(函数(err){
console.error('cannotaccessqueue',err,mqUrl,queueName)
} )

您使用哪个npm软件包直接或通过STOMP协议与rabbitmq通信?你问题的具体答案取决于此。请回答您的问题。@O.Jones我已经编辑了这个问题。while(true)块是否一直在检查新邮件?是的,它一直在检查。我不知道你的应用程序的结构,所以我没有试着猜测你想如何关闭它。谢谢@O.Jones,这正是我想要的。