什么是 Apple 服务器到服务器通知的重试策略

Posted

技术标签:

【中文标题】什么是 Apple 服务器到服务器通知的重试策略【英文标题】:What is retry policy for Apple Server-to-Server Notifications 【发布时间】:2020-06-18 13:12:32 【问题描述】:

我正在实现管理 ios 应用程序订阅的服务器端应用程序。 为了在后端控制帐户状态(订阅是否处于活动状态),我使用Apple Server-to-Server Notifications

文档说:

响应服务器到服务器的通知 你的服务器应该发送一个 HTTP 状态码,指示服务器到服务器是否通知 发帖成功:

如果发布成功,则发送 HTTP 200。您的服务器不是必需的 返回一个数据值。

发送 HTTP 50x 或 40x 让 App Store 重试通知,如果 帖子没有成功。 App Store 多次尝试 在一段时间内重试通知,但最终停止 在不断失败的尝试之后。

但如果我这边出现服务器错误,目前尚不清楚苹果遵循哪个重试策略。 我正在寻找以下问题的答案

    苹果会重试多少次? 重试之间的间隔是多少?

【问题讨论】:

【参考方案1】:

正如您所说,Apple 没有在文档中提供明确的答案。但是,来自 Apple WWDC 2019 大会视频:https://developer.apple.com/videos/play/wwdc2019/302/?time=637

“但是,如果您没有返回 200 响应,我们将重试最多 三次重新发送通知给您”

一些手动测试建议他们重试消息一小时。

【讨论】:

【参考方案2】:

参考:https://developer.apple.com/documentation/appstoreservernotifications/your_server

收到服务器通知后,如果发布成功,则使用 HTTP 状态代码 200 响应 App Store。如果发布不成功,请发送 HTTP 50x 或 40x 让 App Store 重试通知。

如果 App Store 服务器在初始通知尝试后没有从您的服务器收到 200 响应,它会重试 3 次。 App Store 在首次尝试后的 6、24 和 48 小时后重试。虽然 App Store 服务器通知实时报告状态更改,但您始终可以启动收据验证以获取最新的收据。欲了解更多信息

【讨论】:

您是否在“更多信息...”之后遗漏了什么?【参考方案3】:

Apple 将在 3 天内尝试重试 3 次。

【讨论】:

您能分享此信息的来源吗?

以上是关于什么是 Apple 服务器到服务器通知的重试策略的主要内容,如果未能解决你的问题,请参考以下文章

PubSub:如何设置没有指数退避的重试策略?

将 Azure 表存储的重试策略与 Azure Functions 结合使用

feginclient和ribbon的重试策略

如何在 SqlDataAdapter/DataSet 上应用 ReliableSqlConnection 的重试策略

nginx的重试机制以及nginx常用的超时配置说明

如何使用AWS Lambda和SNS事件触发Spring Cloud功能的重试