消息传输重试策略
传输重试策略定义了当消息通知推送向订阅终端节点推送失败时候,如何进行消息重试。当传输重试策略完成规定的重试次数时候,除非为订阅配置死信队列,否则消息通知推送会停止重试并丢弃该消息。
消息通知推送的传输重试策略
终端节点类型立即重试最小延迟重试/间隔时间退避重试/退避策略最大延迟重试/间隔时间总尝试次数HTTP/S自定义(默认0次)自定义(默认0次)自定义(默认3次,线性退避(20秒-20秒))自定义(默认0次)自定义(默认3次)短信(SMS)0次2次,1秒10次,指数退避(1秒-10分钟)38次,10分钟50次邮件(Email)1次1次,10秒10次,线性退避(10秒-5分钟)90次,5分钟102次队列服务(JQS)10次100000次,20秒0次0次100010次函数服务(Funciton)0次2次,1秒10次,指数退避(1秒-20分钟)38次,20分钟50次
每个传输重试策略包含四个阶段。
- 立即重试阶段–此阶段在首次推送失败后立即发生。在该阶段中重试之间没有时间间隔。
- 最小时间间隔重试阶段–此阶段在立即重试阶段之后发生。在该阶段中重试之间时间间隔为最小延迟时间值。
- 退避重试阶段–此阶段在最小时间间隔重试阶段之后发生。此阶段通过规定退避策略控制各个重试之间的延迟。此阶段设置了最短延迟时间、最大延迟时间和退避策略,该退避策略定义了延迟时间从最小值增加到最大值的速率。重试退避策略可以是算术、指数、几何或线性的。
- 最大时间间隔重试阶段–此阶段在退避重试阶段之后发生。在该阶段中重试之间时间间隔为最大延迟时间值。
自定义HTTP/S传输重试策略
用户可以根据业务的不同特性自定义HTTPS的传输重试策略。在主题或者订阅都可以定义HTTP/S传输策略。当HTTP/S订阅设置了订阅级别的传输重试策略将覆盖主题级别传输重试策略。(除非主题级别的传输策略勾选了忽略订阅覆盖,则主题级别的传输重试策略将覆盖订阅级别的。)
如果用户想要在传输重试的4个阶段设置如下策略:
总尝试次数:20次
- 立即重试阶段:3次
- 最小时间间隔重试阶段:4次,相隔20秒
- 退避重试阶段:10次,线性退避,20秒到60秒
- 最大时间间隔重试阶段:4次,相隔60秒
控制台设置
SDK设置-JSON预览
{"healthyRetryPolicy":{"numRetries":20,"numNoDelayRetries":3,"minDelayTarget":20,"maxDelayTarget":60,"numMinDelayRetries":4,"numMaxDelayRetries":4,"backoffFunction":"linear"},"disableSubscriptionOverrides":false}
JSON含义
传输策略包含一个重试策略和两个个限制策略。传输策略共有8个属性。
策略描述范围numRetries重试总数,包括立即重试、最小延迟重试、退避重试和最大延迟重试。0至100默认值:3numNoDelayRetries要立即完成的重试次数0或更多默认值:0minDelayTarget重试的最小延迟时间。单位:秒0至最大延迟时间默认值:20maxDelayTarget重试的最大延迟时间。单位:秒最小延迟时间至3600默认值:20numMinDelayRetries最小时间间隔重试阶段重试次数,各个重试之间有指定的最小延迟时间。0或更多,默认值:0numMaxDelayRetries最大时间间隔重试阶段的重试次数,各个重试之间有最大延迟时间。0或更多,默认值:0backoffFunction各个重试之间退避策略函数。四个选项之一:算术,指数,几何,线性,默认:线性maxReceivesPerSecond每个订阅每秒的最大传输次数。1或更多,默认:无限制disableSubscriptionOverrides是否覆盖订阅的传输重试策略true或false,默认:false
退避策略阶段的重试次数=
numRetries-numNoDelayRetries-numMinDelayRetries-numMaxDelayRetries
退避策略函数:
其中y为延迟时间,x为重试次数,y2为最大延迟时间,y1为最小延迟时间,x2为退避策略阶段重试次数,x1为1,α值控制横轴伸缩曲线
线性(α=1)
指数(α=10)
几何(α=4)
算数(α=2)