Nest RabbitMQ RPC nack 不拒绝承诺

问题描述

使用 nestJS rabbit MQ,我使用 RPC 从一台服务器到另一台服务器。我基本上想要的是 await this.amqpConnection.request 在消费者抛出错误时拒绝承诺。正如我从 thisthisthis 文档中了解到的,当您 NACK(否定确认)消息时,它应该将 RPC 响应放入相应的队列中将传递给客户端的错误信息。下面是一些代码示例:

制作人

import { AmqpConnection } from '@golevelup/nestjs-rabbitmq';

let amqpConnection: AmqpConnection;

sendMessage(payload: any) {
  try {
      const result = await this.amqpConnection.request({
        exchange: 'user',routingKey: 'test',queue: 'test',payload,});
      console.log(result);
  } catch (e) {
      console.error(e); // I expect this flow !!! 
  }
}
    

消费者

  @RabbitRPC({
    exchange: 'user',errorBehavior: MessageHandlerErrorBehavior.NACK
  })
  public async rpcHandler(payload: any): Promise<any> {
     throw Error("Error text that should be proxied to console.error"):
  }
  

但是消息甚至没有返回给客户端。客户端在超时后被拒绝,而不是因为消费者处理过程中的错误。如果我的理解不正确,我想知道是否有 nestjs 的内置机制来拒绝消息,而无需手动为错误创建一些响应类型并在客户端上处理它。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)