admin管理员组

文章数量:1332865

Good Day!

I'm trying to implement 2 microservices that municate with each other through a message broker. But one of them should accept Http requests via REST-Api. Unfortunately, I don't understand how to make the microservice listen to both the message queue and ining HTTP requests. Perhaps I don’t understand something in the paradigm of munication through a message broker, but how then to receive requests from the client and forward them to the microservice architecture?

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();

As you can see, now the application is not listening on port 3000 as in the standard approach. What should be done?

Good Day!

I'm trying to implement 2 microservices that municate with each other through a message broker. But one of them should accept Http requests via REST-Api. Unfortunately, I don't understand how to make the microservice listen to both the message queue and ining HTTP requests. Perhaps I don’t understand something in the paradigm of munication through a message broker, but how then to receive requests from the client and forward them to the microservice architecture?

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();

As you can see, now the application is not listening on port 3000 as in the standard approach. What should be done?

Share asked Jan 21, 2022 at 4:32 MiyRonMiyRon 4367 silver badges20 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 9

The answer turned out to be quite simple. NEST js has hybrid apps. You can get to know them here https://docs.nestjs./faq/hybrid-application#hybrid-application. Thanks everyone

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();

本文标签: javascripthow to use RabbitMQ and RESTAPI in Nest AppStack Overflow