Nestjs中的NestFactory.create可以订阅kafka上的主题吗?

Ada*_*dam 4 architecture apache-kafka microservices nestjs

该文档建议使用NestFactory.createMicroservice创建一个传输订阅应用程序。

我目前有一个基于 REST 的微服务,其中包含域逻辑和与数据库的连接。我想在该微服务上订阅 Kafka 消息。是否可以在这个单一微服务的范围内做到这一点?我在文档中看不到这一点。

这让我想知道模式是否应该是:我应该创建一个额外的微服务,NestFactory.createMicroservice它将连接到 Kafka,然后将消息分发到我的 REST API...通过 REST?这意味着其余 api 将在休息期间发生所有可能的“操作”,但间歇性微服务将根据 Kafka 的消息触发它。

如果这是真的,这是否意味着随着我的应用程序的扩展,我最终可能会为每个剩余微服务订阅一个 Kafka 微服务?或者是否会有一个订阅微服务会触发多个 REST API?或者也许......这取决于用例?

Ada*_*dam 6

可以在嵌套中连接两种方法 - 微服务和普通应用程序。文档没有提及,但常见问题解答解释了如何制作混合应用程序

GRPC示例展示了它的实际应用

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();
Run Code Online (Sandbox Code Playgroud)

这样你就可以将 REST API 与 kafka/rabbit/grpc 连接起来