我正在使用Gmail API(使用Google云端平台)向我的服务器发送推送通知。该邮箱实际上从未被用户访问,它仅用于向我的服务器上的路由发送推送通知,该路由从邮箱中检索最新的电子邮件。
每天,我都有一个cron作业,可以续订此电子邮件地址上的Users: watch()
。它只是一个与云控制台中的单个主题相关联的电子邮件地址,其中一个push
订阅了我的服务器。我的控制器然后调用Users.messages: list
来获取最近的电子邮件列表,然后Users.messages: get
获取包含所有附件ID /文件名的最新电子邮件,最后Users.messages.attachments: get
获取每个电子邮件的每个数据附件。
我注意到当我发送包含大量附件数据(例如25 Mb图像数据)的电子邮件时,我开始收到一系列推送通知,每个推送通知在数据中都有相同的message_id
和时间戳与推送通知POST请求一起发送。目前,我正在通过将message_id
保存在缓存中一段时间以防止我的服务器不止一次对单个推送通知做出反应来解决这个问题。
虽然我的解决方案运行良好,但我很好奇是否有其他人遇到过这样的问题,或者这是否是Gmail API或云平台中的错误。任何帮助或建议表示赞赏!
答案 0 :(得分:0)
我不认为它是Gmail或云平台中的错误。
实际上,正如Push Notifications中所讨论的,Gmail API已经实现了使用Cloud Pub/Sub API来发送推送通知。这允许通过各种方法进行通知,包括webhooks和单个订阅端点上的轮询。并且,使用此API,建议对所有应用程序使用单个主题进行所有Gmail API推送通知。
详细信息可在documentation中找到,为了熟悉此Cloud Pub / Sub API,我建议您浏览Google Cloud Pub/Sub Documentation。