[英]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.