javascript - 如何在 Nest App 中使用 RabbitMQ 和 REST-API?

标签 javascript rabbitmq microservices nestjs

美好的一天!

我正在尝试实现 2 个通过消息代理相互通信的微服务但是其中之一应该通过 REST-Api 接受 Http 请求。不幸的是,我不明白如何让微服务同时监听消息队列和传入的 HTTP 请求。也许我不了解通过消息代理进行通信的范例,但是如何接收来自客户端的请求并将它们转发给微服务架构?

Main.ts

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import {Transport, MicroserviceOptions} from '@nestjs/microservices'

async function bootstrap() {
  const app = await NestFactory.createMicroservice<MicroserviceOptions>(AppModule, {
    transport: Transport.RMQ,
    options: {
      urls: ['amqp://rabbitmq:5672'],
      queue: 'hello_world',
      queueOptions: {
        durable: false
      },
    },
  });
  await app.listen();
}
bootstrap();

如您所见,现在应用程序不再像标准方法那样监听端口 3000。应该怎么办?

最佳答案

事实证明答案很简单。 NEST js 具有混合应用程序。你可以在这里了解他们https://docs.nestjs.com/faq/hybrid-application#hybrid-application .谢谢大家

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import {Transport, MicroserviceOptions} from '@nestjs/microservices'

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  const microservice = app.connectMicroservice({
    transport: Transport.RMQ,
    options: {
      urls: ['amqp://rabbitmq:5672'],
      queue: 'hello_world',
      queueOptions: {
        durable: false
      },
    },
  });

  await app.startAllMicroservices();
  await app.listen(3000);
}
bootstrap();

关于javascript - 如何在 Nest App 中使用 RabbitMQ 和 REST-API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70796428/

相关文章:

javascript - 当滚动的内容在设置为溢出的固定 div 内时,如何在 jquery 中执行滚动命令 : scroll

node.js - Docker-compose使2个微服务(前端+后端)通过http请求相互通信

JavaScript 对象 - [] 与点

javascript - 对存储在 Liferay 中的 Angular 应用程序执行 Protractor 测试时出现 "angular is not defined"错误

javascript - 开发人员工具控制台日志 3 for a=3 和 undefined for var a = 3

rabbitmq - 有没有办法在 AMQP 路由键中指定 "not matching"?

node.js - Rabbitmq 生产者 (symfony 3 ) 和消费者错误 ( NodeJs )

rabbitmq - celery 任务发送到rabbitmq经纪人后丢失

microservices - 如何在微服务架构中构建报告?

rabbitmq - 使用路由 key 来通信服务