cjt*_*cjt 5 google-app-engine google-cloud-platform google-cloud-pubsub
我有一个 Cloud Pub/Sub Push 订阅,它将相同消息的多个实例推送到 GAE 的处理端点。我可以跟踪消息 ID,它\xe2\x80\x99 是多次推送的同一消息。
\n\n我已将 ack-timeout 设置为 600 秒,但它仍然会推送某些消息的多个实例。消息之外没有\xe2\x80\x99t 得到\xe2\x80\x9cacked\xe2\x80\x9d,什么可以触发此行为?有人遇到同样的问题吗?
\n\n我运行的实例越多,问题似乎就越大,但即使使用 basic_scaling 和 max_instances: 1 问题仍然存在。
\n\n我可以在 GAE 中看到一堆 503 错误,但如果我理解正确,这不是问题,因为这些消息会自动“重试”,但 Pub/Sub 会自动“重试”。
\n事实证明,这是 Pub/Sub 的一个众所周知的问题。Pub/Sub 是“至少一次交付”,并且会出现重复。要解决此问题,请阅读此处获取一些灵感,https://cloud.google.com/blog/products/serverless/cloud-functions-pro-tips-building-idempot-functions