无法收到用rabbitmq发布的消息

时间:2019-05-02 09:36:52

标签: node.js rabbitmq

我用express建立了一个小的nodejs项目。在根目录中创建了一个名为“ connectors”的文件夹,其中有两个文件:pulisher.js和consumer.js。在index.js的路由文件夹中,我调用了一个发布msg并调用使用者使用它的终结点。这是发布者和消费者以及索引的代码

Publisher.js

var config = require('../config');
var open = require('amqplib').connect('amqp://'+ config.rabbitmq.url);
var queue = 'hello'
var msg = 'hello world!'
module.exports = open.then(function(conn) {
        return conn.createChannel();
}).then(function(ch) {
         return ch.assertQueue(queue,{durable:false})
                .then(function(ok) {
                        const r =  ch.sendToQueue(queue, Buffer.from(msg));
                        console.log(" [x] Sent %s", msg);
                        return r
        });
}).catch(console.warn);

Consumer.js

var config = require('../config');
var open = require('amqplib').connect('amqp://'+ config.rabbitmq.url);
var queue = 'hello'
module.exports = open.then(function(conn) {
return conn.createChannel();
}).then(function(ch) {
        return ch.assertQueue(queue, {durable: false})
                .then(function(ok) {
                        console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", queue);
                        return ch.consume(queue, function(msg) {
                         console.log(" [x] Received %s", msg.content.toString());
                         ch.ack(msg)
                        }, {
                                noAck: false
                        });
  });
}).catch(console.warn);

index.js

var express = require('express');
var router = express.Router();
var publisher = require('../connectors/publisher');
var consumer = require('../connectors/consumer');
async function pub(){
        publisher
                .then(res=>{
                        console.log('-----------------------')
                        console.log('publishing now',res)
                }).then(()=>{
                        consumer.
                                then(res=>{
                                        console.log('consuming',res)
                                })
                })


}
/* GET home page. */
router.get('/', async(req, res, next) => {
        const result_pub = await pub()
        res.send('ok')
});

module.exports = router;

我使用邮差呼叫“ /”端点,我希望看到console.log(“ [x]收到%s”,msg.content.toString())触发的味精。 但是它没有显示出来,就像没有消耗味精, 当我呼叫端点时,它甚至都没有console.log“已发送问候世界” 这是我得到的输出:

GET / 200 11.934 ms-2

现在发布为true 消费{ConsumerTag:'amq.ctag-BsHsykyMrPKvT1nAjmGmBg'}

感谢您的帮助!

0 个答案:

没有答案