NestJS-2个微服务之间的通信
我使用TCP协议构建了一个Http应用程序和两个微服务 这是我的应用程序图 我试图通过NestJS-2个微服务之间的通信,nestjs,Nestjs,我使用TCP协议构建了一个Http应用程序和两个微服务 这是我的应用程序图 我试图通过@Messagepattern()从帐户服务向好友服务发送消息 为每个服务设置ClientProxy。但它不起作用 我读过官方文档@nestjs/microservices,但我不知道哪一个是合适的 是否有正确的方法将消息从一个微服务发送到另一个微服务?您需要设置消息代理,如RabbitMQ或Kafka,即对于RabbitMQ,输入下面的命令并创建RabbitMQ容器 docker run -it --rm
@Messagepattern()
从帐户服务向好友服务发送消息
为每个服务设置ClientProxy。但它不起作用
我读过官方文档@nestjs/microservices
,但我不知道哪一个是合适的
是否有正确的方法将消息从一个微服务发送到另一个微服务?您需要设置消息代理,如RabbitMQ或Kafka,即对于RabbitMQ,输入下面的命令并创建RabbitMQ容器
docker run -it --rm --name rabbitmq -p 0.0.0.0:5672:5672 -p 0.0.0.0:15672:15672 -d rabbitmq:3-management
然后将RabbitMQ选项传递给main.ts
bootstrap函数:
async function bootstrap() {
const rabbitmqPort = 5672
const rabbitmqHost = 127.0.0.1
const app = await NestFactory.create(AppModule);
app.connectMicroservice<MicroserviceOptions>({
transport: Transport.RMQ,
options: {
urls: [
`amqp://${rabbitmqHost}:${rabbitmqPort}`,
],
queue: 'myqueue',
queueOptions: {
durable: false,
},
},
});
app
.startAllMicroservices(() => {
logger.log('Microservice is listening!');
})
.listen(3000, () => {
logger.log('Api Server is listening on 3000');
});
}
bootstrap();
然后将Friend
客户端注入服务构造函数,如下所示:
@Inject('Friend')
private friendClient: ClientProxy,
const myVar = await this.friendClient.send('Some_pattern', {SOME DATA}).toPromise();
发送如下消息:
@Inject('Friend')
private friendClient: ClientProxy,
const myVar = await this.friendClient.send('Some_pattern', {SOME DATA}).toPromise();
为您的两个微服务设置所有上述配置,它将正常工作
const myVar = await this.friendClient.send('Some_pattern', {SOME DATA}).toPromise();