Разобрался! Оказывается, я указывал http url для Grpc службы. Это правильный вариант клиента для второго сервиса.
export const notificationClientServiceOptions: ClientOptions = {
transport: Transport.GRPC,
options: {
// you can specify any port that is not in use (just don't prefix it with 'http')
url: 'localhost:5500',
package: 'notification',
protoPath: join(__dirname, './notification.proto'),
},
};
Также я посмотрел в исходный код для nestjs. Получается, что URL-адрес по умолчанию для любого микросервиса: localhost: 5000 , поэтому, если вы используете более одной службы, лучше указывать URL-адрес для каждой службы.
Другой проблемой, с которой я столкнулся, было подключение микросервисов;
Если службы расположены в двух отдельных проектах nestjs, вам не нужно использовать app.connectMicroservice(secondServiceOptions)
в firstService
, это потому, что await app.startAllMicroservicesAsync()
попытается запустить обе службы, но это не удастся. Это потому, что secondService
уже запущен в отдельном проекте.
Для подключения к secondService
из firstService
используйте декоратор @Client(secondServiceOptions)
.