【问题标题】:Microservices on Node.js with MicroMQNode.js 上的微服务与 MicroMQ
【发布时间】: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


    【解决方案1】:

    不确定 MicroMQ,但您可以使用 SMF 框架来构建自动连接到 RabbitMQ 的微服务原型:

    https://medium.com/@krawa76/bootstrap-node-js-microservice-stack-4a348db38e51

    【讨论】:

      猜你喜欢
      • 2021-04-12
      • 1970-01-01
      • 2016-03-05
      • 2017-09-14
      • 1970-01-01
      • 2019-04-06
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多