Google app engine 如何修复GCP发布/订阅中推送订阅的多条消息

Google app engine 如何修复GCP发布/订阅中推送订阅的多条消息,google-app-engine,google-cloud-platform,google-cloud-pubsub,Google App Engine,Google Cloud Platform,Google Cloud Pubsub,我有一个云发布/订阅推送订阅,它将相同消息的多个实例推送到一个处理端点I GAE。我可以跟踪消息ID,它是同一条消息,可以多次推送 我已经将ack超时设置为600秒,但它仍然会推送一些消息的多个实例。在消息未得到“确认”的情况下,什么会触发此行为?有人有同样的问题吗 我运行的实例越多,问题似乎就越大,但即使使用基本的_缩放和max_实例:1问题仍然存在 我可以在GAE中看到大量503个错误,但如果我理解正确,这不是问题,因为这些消息会自动“重新尝试”,但会发布/订阅。事实证明,这是发布/订阅的一

我有一个云发布/订阅推送订阅,它将相同消息的多个实例推送到一个处理端点I GAE。我可以跟踪消息ID,它是同一条消息,可以多次推送

我已经将ack超时设置为600秒,但它仍然会推送一些消息的多个实例。在消息未得到“确认”的情况下,什么会触发此行为?有人有同样的问题吗

我运行的实例越多,问题似乎就越大,但即使使用基本的_缩放和max_实例:1问题仍然存在


我可以在GAE中看到大量503个错误,但如果我理解正确,这不是问题,因为这些消息会自动“重新尝试”,但会发布/订阅。

事实证明,这是发布/订阅的一个众所周知的问题。发布/订阅是“至少一次交付”,并且预期会重复。要解决这个问题,请阅读此处获得一些启发,

我将此作为一个答案发布,因为我没有足够的声誉作为评论:

正如您已经了解到的,一旦发布/订阅向订阅者发送消息,订阅者应该确认该消息。任何未被确认的消息,云发布/订阅将重复尝试传递(检查)。这意味着偶发事件是可以预料的。但是,高重复率可能表示客户端未在配置的确认截止时间内确认消息,并且云发布/订阅正在重试消息传递。
您可以使用Stackdriver来检查发布/订阅系统是否成功,您的消息是否得到确认(检查&),或者重复的消息是否过多(检查&)。

您可以共享代码(或简化版本)吗?出了点问题。GAE中的代码并不重要。事实证明,这是Pub/Sub的一个众所周知的问题。Pub/Sub是“至少一次交付”,预计会出现重复。要解决这个问题,请在这里阅读以获得一些灵感,