【发布时间】:2020-03-14 00:44:38
【问题描述】:
我正在使用 MicroMQ 在不同的服务之间进行通信,对于主要服务没问题,我收到请求,然后通过 RabbitMQ 委派它们。我可以在队列中看到这条消息,但我的微服务没有收到任何消息。这是主要服务:
控制器:
export const create = async (req, res) => {
await res.delegate('trade');
}
网关配置:
const Gateway = require('micromq/gateway');
const config = require('../configServer');
export const gateway = new Gateway({
microservices: ['platform', 'trade'],
name: 'platform',
rabbit: {
url: "amqp://rihtavqi:AhKDUujmeC5hBUPb0zQb7qh7AgqnR5QG@lion.rmq.cloudamqp.com/rihtavqi"
}
});
export const services = {
trade: 'trade'
};
server.js
app.use(gateway.gateway.middleware());
这是我在主要服务中使用的。这只是我调用网关的地方......
这是针对微服务的: server.js
const express = require("express");
const gateway = require('./gateway/gatewayRoute');
const app = express();
const server = require("http").createServer(app);
gateway.start().then(() => {
server.listen(constant.config.port, constant.config.host, async () => {
loggingHelper.consoleLog("APP", `Server running on port ${constant.config.port} and on host ${constant.config.host}.....`);
process.on("unhandledRejection", (reason, promise) => {
loggingHelper.consoleLog("APP_ERROR", `Uncaught error in ${String(reason)}`, promise);
});
});
路线
const MicroService = require('micromq/src/MicroService');
const loggingHelper = require('../app/helper/loggingHelper');
const orderService = require('../app/service/orderService');
const gateway = new MicroService({
name: 'trade',
rabbit: {
url: "amqp://rihtavqi:AhKDUujmeC5hBUPb0zQb7qh7AgqnR5QG@lion.rmq.cloudamqp.com/rihtavqi"
}
}
);
gateway.post('/create', async (req, res) => {
loggingHelper.consoleInfoLog("TRADE", "/create received.");
res.json(await service.create(req));
});
module.exports = gateway;
最后一个不起作用。顺便说一句,我的想法告诉我 .post() 函数是
未解析的函数或方法 post()
我认为问题就在这里。我尝试了不同的方法(在微服务中创建网关(micromq/gateway),试图解构微服务,但这一切都没有给我任何东西) 所有这些都是通过示例创建的,但它不起作用……我不明白为什么?有人知道为什么吗?
【问题讨论】:
标签: node.js express microservices