Я создал небольшой проект 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'}
Спасибо за вашу помощь!