我在创建订阅时设置了setAckDeadlineSeconds(5)
,但当启用消息排序时,ackDeadlineSeconds
不起作用。如果经过的时间超过确认截止日期,则不会重新发送消息。启用消息排序时,这是所需的行为吗?
我正在创建订阅如下:
Subscription request = Subscription.newBuilder()
.setName(subscriptionName.toString())
.setTopic(projectTopicName.toString())
.setEnableMessageOrdering(true)
.setAckDeadlineSeconds(5)
.build();
启用messasge订购时,应遵守确认截止日期。需要注意的一点是,客户端库管理ack扩展,因此不使用在创建订阅时设置的ack截止日期。他们默认将ack截止日期延长一个小时。您提到您调用setMaxAckExtensionPeriod
,尽管您只在getSubscriber
而不是createSubscriber
的模拟器模式下这样做,后者是您正在调用的方法(尽管您可能已经更新了代码,以便在任何地方都设置它(。
如果在验证您确实设置了最大ack扩展后,仍然没有重新发送消息,那么最好创建一个支持案例。对于包含您的项目和订阅信息的案例,支持人员可以查看那些没有重新发送的消息发生了什么。