Мне нужно использовать 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
, а не с помощью Factory, а затем запустите их все вместе с app.startAllMicroservices()
.
В качестве альтернативы вы можете использовать Kafka Connect вне Nest для приема событий RabbitMQ непосредственно в Kafka, а затем настроить только микросервис Kafka.