Reputation: 3518
The documentation suggests using NestFactory.createMicroservice
to create a transport subscribing app.
I currently have a REST based microservice that contains domain logic and connection to the database. I'd like to subscribe on that microservice to Kafka messages. Is it possible to do this in a scope of this single microservice? I can't see that in the docs.
It makes me wonder if the pattern should be: I should create an extra microservice with NestFactory.createMicroservice
that will connect to Kafka and then will distribute message to my REST API... over REST? This would mean that the rest api would have all possible "actions" happen over rest, but the intermittent microservice will be triggering it upon Kafka's message.
If that was true, does that mean that as my application scales, I might end up with one Kafka subscribing microservice per one rest microservice? Or will there be one subscribing microservice that will trigger multiple REST APIs? Or perhaps... it depends on the use case?
Upvotes: 4
Views: 1694
Reputation: 3518
It is possible to connect both approaches in nest - microservice and normal app. The documentation doesn't mention it, but FAQ explains how to make a Hybrid application.
The GRPC example shows it in action
import { NestFactory } from '@nestjs/core';
import { MicroserviceOptions } from '@nestjs/microservices';
import { AppModule } from './app.module';
import { grpcClientOptions } from './grpc-client.options';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.connectMicroservice<MicroserviceOptions>(grpcClientOptions);
await app.startAllMicroservicesAsync();
await app.listen(3001);
console.log(`Application is running on: ${await app.getUrl()}`);
}
bootstrap();
This way you can have rest api with kafka/rabbit/grpc connected
Upvotes: 6