【问题标题】:GCloud Pub/Sub Push Subscription: Limit max outstanding messagesGCloud Pub/Sub Push Subscription:限制最大未完成消息
【发布时间】:2018-09-13 01:37:38
【问题描述】:

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

我还想了很多其他方法来有效地实现这一点,但似乎没有一个很好:

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

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

我的推送端点都在 gae 上,所以 gae 配置中也可能有一些东西来限制同时推送订阅请求?

【问题讨论】:

  • 您可以在此处的文档中看到:cloud.google.com/pubsub/docs/subscriber 您可以限制确认消息的时间:“订阅者有一个可配置的、有限的时间或 ackDeadline,以确认消息。一旦截止日期过去,未确认的消息将变为未确认。你能用这样的东西吗?

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


【解决方案1】:

推送订阅不提供任何方式来限制未处理消息的数量。如果想要这种级别的控制,就必须使用pull subscriptionsflow control

返回 429 错误以限制未处理的消息可能会产生不良副作用。发生错误时,Cloud Pub/Sub 将降低向推送订阅者发送消息的速率。如果返回的 429 错误数量足够多,则订阅者完全有可能在一段时间内收到比它可以处理的消息数量更少的消息,而 Cloud Pub/Sub 会重新提高交付率。

从推送切换到拉取是可能的,但仍然可能不是一个好的解决方案。这实际上取决于推送订阅者超过所需未完成消息数量的频率。推送和拉取和返回之间的更改可能不会立即发生,这意味着订阅者仍可能在一段时间内超过所需的限制,并且在切换回推送订阅者时也可能会遇到接收新消息的延迟。

【讨论】:

  • 哎呀,云任务有这个但没有那么多合规性:(并且不确定它是否有死信队列,但我认为确实保留了失败的项目。
猜你喜欢
  • 2021-04-18
  • 2021-06-18
  • 1970-01-01
  • 2021-05-04
  • 2022-01-23
  • 1970-01-01
  • 2018-03-19
  • 2014-07-22
  • 2020-01-03
相关资源
最近更新 更多