繁体   English   中英

如何在同一个 Nest.js 项目中使用 RabbitMQ 作为消息代理和 Kafka 作为事件总线处理程序?

[英]How to use RabbitMQ as a Message Broker and Kafka as the Event Bus handler on the same Nest.js project?

我需要同时使用 RabbitMQ 和 Kafka。 RabbitMQ 将负责通过网关(一种微服务)将一个微服务的必要数据检索到另一个微服务,因此它们不会进行点对点通信。 Kafka 将用于发布诸如“UserCreated”之类的事件,并且已经被订阅和授权的微服务将根据事件进行操作。 令我困惑的部分在这里:

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

@nestjs/microservices 需要有一个名为 transport 的属性,它可以是 TCP、Kafka、RabbitMQ 等。所以我认为当我尝试同时使用它们中的两个时它可能会限制我。

你指的是一个混合应用程序

创建多个微服务并将它们附加到app ,通过app.connectMicroservice而不是使用工厂,然后将它们与app.startAllMicroservices()一起启动。

或者,您可以使用 Nest 外部的 Kafka Connect 将 RabbitMQ 事件直接提取到 Kafka 中,然后仅设置 Kafka 微服务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM