GCP Pub Sub:按批次处理消息

GCP Pub Sub: process messages by batches

在GAE 应用程序中,我们希望批量处理Pub Sub 消息,例如:每10 秒读取一次订阅上的所有未决消息并批量处理它们(因为这样效率更高)。同步 subscriber.pull() 可以很好地让我们读取一批待处理的消息。问题是我接下来要做什么?睡 10 秒再读一遍?但这将需要一个永久的后台任务,这在 App Engine 中很难设置。由 cron 每分钟(或每小时)调用的端点,运行多个循环 [读取和处理消息,休眠 10 秒] 循环一个小时,然后退出?有更好的主意吗?

您可以使用 Cloud Scheduler 每分钟调用您的 App Engine 端点。此端点读取 pubsub 订阅一段时间(假设 45 秒)处理消息,然后 return 200 HTTP 代码。

如果您想按window 10s 的时间阅读,您需要在您这边构建流程。继续每分钟调用一次端点(这是无服务器模式,该过程仅在请求处理中执行),但端点监听订阅 10 秒,处理消息,睡眠 10 秒并重复 5 次,然后 return 一个 200 HTTP 代码。