Nestjs 中的 RabbitMQ,生产者和消费者出错

问题描述 投票:0回答:1

我正在尝试使用 Rabbitmq 在 Nestjs 中实现微服务,但我进入了 Producer : 与 RMQ 断开连接。正在尝试重新连接。 [Nest] 21700 - 08/05/2023, 9:01:28 PM 错误 [ClientProxy] 对象:

 { "err": { "code": 406, "classId": 60, "methodId": 20 } }

消费者仍然可以, 这是我的制作人:

@Get()
async getUser() {
  return this.authService.send(
    {
    cmd : 'get-user'
    },
    {}
    )
}

这是我的消费者:

@MessagePattern({cmd : 'get-user'})
async getUser(@Ctx() context : RmqContext){
  const channel = context.getChannelRef()
  const message = context.getMessage()
  channel.ack(message)

  return {user: "User"}
}

这是消费者中的配置,与生产者中的配置相同:`

async function bootstrap() {
  const app = await NestFactory.create(AuthModule);
  const configService = app.get(ConfigService)
  const USER = configService.get('RABBITMQ_USER');
  const PASSWORD = configService.get('RABBITMQ_PASS')
  const HOST = configService.get('RABBITMQ_HOST');
  const QUEUE = configService.get('RABBITMQ_AUTH_QUEUE');

   app.connectMicroservice<MicroserviceOptions>({
      transport : Transport.RMQ,
      options : {
        urls : [`amqp://${USER}:${PASSWORD}@${HOST}`],
        noAck : false,
        queue : QUEUE,
        queueOptions : {
          durable : true
        }
      }
      
   })

   app.startAllMicroservices();
}

可能出了什么问题?服务器正在工作...

rabbitmq nestjs
1个回答
0
投票

此消息通常来自已声明的队列,该队列在部署后发生了一些变化。

最简单的解决方案是登录 Rabbit 管理控制台,手动删除有问题的队列并重新启动 NestJS 应用程序,以便它可以使用新设置重新创建队列。

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.