GCloud Pub / Sub Push订阅:限制最大未完成消息

时间:2018-04-03 16:29:55

标签: google-cloud-platform google-cloud-pubsub

推送订阅配置中是否存在限制未完成消息的最大数量的方法。在高级用户文档(https://cloud.google.com/pubsub/docs/push)中,它表示"通过慢启动,Google Cloud Pub / Sub通过一次发送一条消息开始,并在每次成功交付时加倍,直到达到最大并发消息数。"我希望能够限制正在处理的最大消息数,可以通过pub / sub配置来完成吗?

我还想到了其他一些有效实现这一目标的方法,但似乎都不是很好:

  • 在我的推送端点中实现了一些信号量类型系统,一旦达到我的最大并发级别就会返回429?

  • 类似,但要取消注册推送端点(将其转换为拉取订阅),直到处理完当前消息

我的推送端点都是gae,因此gae配置中还可能存在限制同时推送订阅请求的内容?

1 个答案:

答案 0 :(得分:1)

推送订阅没有提供任何方式来限制未完成消息的数量。如果要控制该级别,则必须使用pull subscriptionsflow control

返回429错误作为限制未发送消息的一种方法,可能会产生不良后果。出现错误时,Cloud Pub / Sub将降低向推送订阅者发送消息的速度。如果返回了足够多的429个错误,则在Cloud Pub / Sub逐渐提高传递速率的同时,订阅者接收到的消息数量极有可能超出其一段时间。

从推到拉切换是有可能的,尽管仍然可能不是一个好的解决方案。这实际上取决于推送订户超出未完成消息的期望数量的频率。推拉和回拉之间的变化可能不会立即发生,这意味着订户在一段时间内仍可能超出期望的限制,并且在切换回推订户时,在接收新消息方面也会遇到延迟。