如何解决rabbitmq消耗函数/ channel.ack
我可以使用以下脚本在Rabbitmq上使用以下功能:
async consume(
queue: string,callback: (message: ConsumeMessage | null) => void,) {
return this.channel.consume(queue,message => {
callback(message);
this.channel.ack(message);
});
}
频道。使用接收队列,并且消息类型为ConsumeMessage 但是this.channel.ack需要从lib amqlib接收MESSAGE类型作为参数
但是由于我的消息是“消费消息”,因此出现以下错误:
'ConsumeMessage |类型的参数空'不可分配给 类型为“消息”的参数。类型'null'不能分配给类型 'Message'.ts(2345)
当我尝试使用.ack
我也对在出现错误的情况下如何实施治疗感到怀疑
解决方法
您收到该错误是因为您无法在需要ConsumeMessage | null
的地方使用(我想是)您的自定义amqplib.Message | null
类型。 TypeScript编译器只能保证将匹配Message
的对象传递到回调中,并且不能保证您的附加属性在那里。
我也对在出现错误的情况下如何实施治疗感到怀疑
您可能要添加一个err
参数作为回调的第一个参数,并且如果message
是null
({{3} }。我假设您使用的是amqplib/callback_api
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。