在向设备推送脚本时,可能会因为设备掉线、脚本冲突等造成推送失败,如果出现这种情形该怎么进行记录、重推。如果重推,重推的机制是什么?
不知道大家有没有类似的解决方案或者框架。
在向设备推送脚本时,可能会因为设备掉线、脚本冲突等造成推送失败,如果出现这种情形该怎么进行记录、重推。如果重推,重推的机制是什么?
不知道大家有没有类似的解决方案或者框架。
15 回答8.4k 阅读
4 回答4.4k 阅读✓ 已解决
4 回答4k 阅读
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
推送的消息使用一个结构体,比如
使用这样的一个json字符串将推送的设备和信息,推送一个消息队列里,简单点,使用Redis的list。
然后启动计划任务从这个队列里取出数据,解析出设备id和消息,重试次数和最后发送时间(这块就可以用来做最多重试几次和多久重试一次的逻辑),进行发送,不管成功还是失败,都要记录一条日志。数据库,文件,还是消息都可以,需要持久化。
如果发送失败,就把这条消息里的retry+1,last_send_time赋值为当前时间,然后把这个消息重新丢回到消息队列的尾部,如果重试次数大于规定,则丢弃这条消息。