我有两个带有 Nest.js 的微服务,它们都连接到 RabbitMQ 服务(一个是发布者,一个是接收者),我试图从发布者向接收者发送消息,但似乎它根本没有执行任何操作
出版商:
auth.module.ts :
imports:[ClientsModule.registerAsync([
{
name: 'RMQ_SERVICE',
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
transport: Transport.RMQ,
options: {
urls: [`amqp://${configService.get('RMQ_HOST')}:5672`],
queue: 'api-queue',
queueOptions: {
durable: false,
},
},
}),
inject: [ConfigService],
},
]),
]
auth.service.ts :
@Inject('RMQ_SERVICE') private readonly client: ClientProxy,
and using it like that :
this.client.send({ cmd: 'create-user-data' },{});
Run Code Online (Sandbox Code Playgroud)
接收者 :
main.ts :
app.connectMicroservice<MicroserviceOptions>({
transport: Transport.RMQ,
options: {
noAck: false,
urls: [`amqp://${process.env.RMQ_HOST}:5672`],
queue: 'api-queue',
queueOptions: {
durable: false,
},
},
});
await app.startAllMicroservices();
users-data.controler.ts :
@MessagePattern({ cmd: 'create-user-data'})
async createUserData() {
console.log('create-user-data');
}
Run Code Online (Sandbox Code Playgroud)
看不到任何错误,我也有rabbitmq网络监视器,看不到任何消息
知道有什么问题吗?
如果我使用emit和EventPattern它的工作原理我不明白为什么?
好吧,经过长时间的挖掘,我只需要做
const result = await this.client.send(
{ cmd: 'create-user-data' },
{
userId: user.id,
provider,
...socialUser,
},
);
await result.subscribe();
Run Code Online (Sandbox Code Playgroud)
我在接收器上收到了消息
| 归档时间: |
|
| 查看次数: |
3699 次 |
| 最近记录: |