文档建议使用NestFactory.createMicroservice
创建运输订阅应用。
我目前有一个基于REST的微服务,其中包含域逻辑和与数据库的连接。我想在该微服务上订阅Kafka消息。是否可以在单个微服务的范围内执行此操作?我在文档中看不到。
这让我怀疑模式是否应该:我应该使用NestFactory.createMicroservice
创建一个额外的微服务,该服务将连接到Kafka,然后将消息通过REST分发到我的REST API。这意味着其余的api将在休息时发生所有可能的“动作”,但是间歇性的微服务将根据Kafka的消息触发它。
如果这是真的,那是否意味着随着我的应用程序扩展,我最终可能会在每个剩余的微服务上获得一个Kafka订阅微服务?还是会有一个订阅微服务会触发多个REST API?也许...这取决于用例?
答案 0 :(得分:0)
以上是潜在的应用程序体系结构,尽管可以将两种方法嵌套在一起。微服务文档没有提及它,但是FAQ解释了如何制作Hybrid application。
GRPC example将其显示出来
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();
通过这种方式,您可以在连接了kafka / rabbit / grpc的情况下获得rest api