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



我需要一起使用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微服务。

最新更新