Не могу получить сообщения, опубликованные с rabbitmq - PullRequest
0 голосов
/ 02 мая 2019

Я создал небольшой проект nodejs с помощью Express. создал папку в корне под названием «коннекторы», в которой у меня есть два файла: pulisher.js и consumer.js. и в папке маршрутов в index.js я вызываю конечную точку, которая публикует сообщение и вызывает потребителя, чтобы использовать его. Вот код издателя и потребителя и индекс

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] Received% s", msg.content.toString ()); но это не показывает, как будто это не потребляет MSG, И когда я вызываю конечную точку, она даже не console.log "отправил привет мир" Это вывод, который я получаю:

GET / 200 11,934 мс - 2

публикация теперь верна Consuming {consumerTag: 'amq.ctag-BsHsykyMrPKvT1nAjmGmBg'}

Спасибо за вашу помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...