我目前已切换到google-cloud-pubsub库的版本0.24.0-beta,并且找不到修改消息确认期限的方法。在以前的版本中,有一个modifyAckDeadline(),它允许我执行此操作。新版本有可能吗?

为了弄清楚为什么我要尝试:我想要实现的是一种重试机制,其中失败的消息将在10分钟内重新发送,并且仅在X次此类不成功的重试之后才进行确认。

最佳答案

为了保留租约消息(因为它需要更长的处理时间),新版本的订户库会在后台为您调用ModifyAckDeadline。只要消息未完成,即您没有在MessageReceiver随消息一起接收的AckReplyConsumer上调用ack()或nack(),库本身就会在消息上调用ModifyAckDeadline。

您的目标有所不同:您想使用ModifyAckDeadline尽力防止一段时间内再次传递消息。如果要等待的时间总是10分钟,那么最好的办法是在创建用户时在setMaxAckExtensionPeriod()上以10分钟的持续时间呼叫Subscriber.Builder。然后,当您无法处理消息时,请勿确认或否定该消息。客户端库将继续ModifyAckDeadline十分钟,然后可以重新传递该消息。

10-06 14:49