如何在 Pubsub 上正确使用 nack?

程序员89

我正在收集来自 Pubsub 主题的消息。主要思想是对我收到的每条消息执行一些逻辑(在 DB 中插入一些内容)。我的问题是这个。

在我完成逻辑之后,我想放置一个message.ack()方法来告诉 pubsub“好的,这条消息完成了!”。我的问题是我想去“黑暗的一面”,如果有人失败,请转到我的位置message.nack()说“好吧,发布订阅,我们有问题,我不承认这个消息,所以让我们继续其余的”

但它不断抛出这个错误,不要继续其他消息。

我能做什么?

控制器:

  @EventPattern('topicName')
  async extractMessageTopic(msg: Message) {
    try {
      console.log("--Iniciando--");
      await this.appService.extractMessageTopic(msg)

      
      msg.ack() //Acknoledge the message
    } catch (error) {
      console.log("Error primera capa!", error);
      msg.nack()//If any error, dont acknoledge
    }
  }
}

服务:

  async extractMessageTopic(msg: Message) {
    const buf = Buffer.from(msg.data)
    const dataObject: any = JSON.parse(buf.toString())
    console.log("Mensaje -> ", dataObject);
    console.log("------------");


    //Inserto En shipment
    //const shipId = await this.shipmentRepositoryService.insert(dataObject)

    //Inserto en Orders

    //Inserto en Lines
  }

谢谢!

富达

在您的用例中实现的逻辑接收和处理消息,如果它出错,您正在做的nack()将导致无限重新传递消息。nack()的行为是它会不断地重新传递消息,直到它没有被确认。

纳克()

从我们的库存中删除消息并安排它重新发送。

我可以建议的是设置一个死信主题它的作用是,如果一条消息在设定的期限内没有被确认,它将重试多次。如果达到最大重试次数,则消息将被发送到死信主题,并且在满足设置的消息保留限制时将清除消息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通过他们的 REST API NACK Google Cloud PubSub 消息?

如何在Spring AMQP中使用Ack或Nack

Cloud PubSub-NACK邮件是否保留7天以上?

如何在Google服务帐户中使用PubSub Rest API?

如何在VPC服务控件中使用PubSub Push订阅?

如何使用 DSL 为 ack/nack 和返回队列配置 amqp-outbound 适配器?

如何在 Hedis haskell pubSub 中发布

Knockoutjs observablearray pubsub 如何?

如何使用 pubsub 模拟器 http API 创建订阅?

如何使用Firebase云功能pubsub.schedule?

如何使用ACL限制对Redis pubsub中某些主题的访问?

如何使用python从后台函数向pubsub返回确认

如何使用 Google Cloud Functions / Tasks / PubSub 进行批处理?

pubsub中订户的重试设置是什么?如何在Spring应用程序中正确设置它们?

如何在 XSLT 上正确使用 GMT?

如何在 Angular 上使用正确的 markAsDirty

如何将现有的PubSub订阅与Google提供的PubSub一起使用到BigQuery Dataflow Template

如何在Google Cloud App Engine上使用PubSub创建订阅者,以通过Publisher从Google Cloud App Engine Flex收听消息?

使Google Pubsub上的消息专用

如何在PubSub的项目课题查询pubsub.topics.list许可/特定主题

如何验证发送到PubSub的所有消息均已正确发送?

如何在Spring GCP中订阅多个Google PubSub项目?

如何在pubsub回调中添加参数

如何在 Firebase Cloud Functions 中确认 PubSub 消息?

如何在Apache Beam中提取Google PubSub发布时间

如何在gcloud pubsub中为主题添加protobuf文件?

如何在 Apollo 中映射 GraphQL 订阅的 PubSub 值?

node.js上的gcloud pubsub-如何设置IAM策略

如何在Kotlin Android上正确使用URL