我正在尝试使用 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();
}
可能出了什么问题?服务器正在工作...
此消息通常来自已声明的队列,该队列在部署后发生了一些变化。
最简单的解决方案是登录 Rabbit 管理控制台,手动删除有问题的队列并重新启动 NestJS 应用程序,以便它可以使用新设置重新创建队列。
希望这有帮助