问题描述
使用 nestJS rabbit MQ,我使用 RPC 从一台服务器到另一台服务器。我基本上想要的是 await this.amqpConnection.request
在消费者抛出错误时拒绝承诺。正如我从 this 和 this 和 this 文档中了解到的,当您 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 (将#修改为@)