簡體   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