如何修复 GCP Pub/sub 中推送订阅的多条消息

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

cjt*_*cjt 3

事实证明,这是 Pub/Sub 的一个众所周知的问题。Pub/Sub 是“至少一次交付”,并且会出现重复。要解决此问题,请阅读此处获取一些灵感,https://cloud.google.com/blog/products/serverless/cloud-functions-pro-tips-building-idempot-functions