Node.js 使用Cote强制微服务等待RabbitMQ发布消息
我有一个API-GATEWAY微服务来管理整个节目,其中一个服务叫做QueueService 这是API网关Node.js 使用Cote强制微服务等待RabbitMQ发布消息,node.js,promise,async-await,microservices,cote,Node.js,Promise,Async Await,Microservices,Cote,我有一个API-GATEWAY微服务来管理整个节目,其中一个服务叫做QueueService 这是API网关 const express = require('express') const bodyParser = require('body-parser') const cote = require('cote') const cors = require('cors'); const app = express() app.use(bodyParser.json()) app.use(c
const express = require('express')
const bodyParser = require('body-parser')
const cote = require('cote')
const cors = require('cors');
const app = express()
app.use(bodyParser.json())
app.use(cors());
app.post('/queue-msg', async (req, res, next) => {
let { from, to } = req.body;
const payload = {
from, to
}
const queue = await queueRequester.send({ type: 'create-queue-message', payload })
res.status(200).send({ "message-sent": true, queue });
});
这是thq队列服务:
const cote = require('cote')
const queueProducer = require('./utils/queueProducer');
const queueName = 'pathfinderqueue';
const queueResponder = new cote.Responder({ name: 'queue responder', key: 'deliveries' })
queueResponder.on('*', req => req.type && console.log(req))
const deliveries = []
let idCounter = 0
queueResponder.on('create-queue-message', req => {
async function makeRequest() {
console.log('Got a message from API-GATEWAY!');
let { payload } = req; // get From & To
queueProducer.publishToQueue(queueName, payload); // Publish to Rabbit
const queue = { id: idCounter++, status: 'pending' } // Set the ID
deliveries.push(queue)
return Promise.resolve(queue)
}
const response = makeRequest();
return response;
})
但是,每当API网关将来自React客户端的消息发布到QueueService时,QueueService不会在on
事件中等待,而是发回消息
"message-sent": true
给客户
我们如何强制排队服务等待