首页 > 解决方案 > google pub sub 中的消息排序是否遵守截止日期?

问题描述

setAckDeadlineSeconds(5)在创建订阅时设置了,但是当启用消息排序时,ackDeadlineSeconds它不起作用。如果经过的时间超过确认截止日期,则不会重新传递消息。这是启用消息排序时所需的行为吗?

我正在创建订阅,如下所示:

Subscription request = Subscription.newBuilder()
          .setName(subscriptionName.toString())
          .setTopic(projectTopicName.toString())
          .setEnableMessageOrdering(true)
          .setAckDeadlineSeconds(5)
          .build();

标签: google-cloud-platformgoogle-cloud-pubsub

解决方案


启用消息排序时,应遵守确认截止日期。需要注意的一件事是客户端库管理 ack 扩展,因此不使用在订阅创建时设置的 ack 截止日期。他们默认将确认期限延长一小时。你提到你调用了setMaxAckExtensionPeriod,虽然你只在模拟器模式下在getSubscribernot 中这样做createSubscriber,后者是你正在调用的方法(尽管也许你已经更新了代码以在任何地方设置它)。

如果在验证您确实设置了 max ack 扩展后,您仍然没有收到重新传递的消息,最好创建一个支持案例。对于包含您的项目和订阅信息的案例,支持人员可以查看那些未重新传递的消息的情况。


推荐阅读