2 jonsmiths JonSmiths 于 2017.09.04 08:54 提问

java的http请求失败后间隔一定时间重新请求

java需要写一段程序去做HTTP请求,每次请求的url可能都是不一样的。当一次请求失败的时候
如何让它间隔一段时间比如3分钟,再重新去请求呢。(就是类似微信支付成功后异步通知的机制)

2个回答

liupan6889
liupan6889   2017.09.04 09:01

使用定时器,java是有的,找一下度娘

liupan6889
liupan6889 下面说的好,采用任务队列,失败的时候重新请求
2 个月之前 回复
JonSmiths
JonSmiths 这个我想过,可对于没一条url来说再次请求的时间都是不一样的,总不可能对每条请求都开吧。那就只能开个定时器间隔一段时间去扫描是否有请求到时间重新请求了。这样还是觉得不太好,而且误差时间较大。定时间隔时间太小又太频繁了吧。
3 个月之前 回复
wzk1986618
wzk1986618   2017.09.04 09:40

这个有一个常用的方案就是
每次失败就做一次记录,记录请求的必要的参数信息
开一个定时任务定时对这些失败的任务做新的请求,如果再次失败则继续加入失败队列中等待下一次请求发起任务

wzk1986618
wzk1986618 回复JonSmiths: 可以为每一次调用设置一个重新请求的次数,如果第一次请求失败,重启一个线程不停的调用n次,如果还是失败再放入数据库中记录,这样可以满足一定的时效性
3 个月之前 回复
JonSmiths
JonSmiths 嗯,我大概想了一下,如果第一次调用失败就记录信息到数据库,并计算它下一次请求得时间。然后开定时器定时扫描满足重新扫描时间得条目重新请求。然后失败就再计算时间,重复一定次数为止。就是会有延迟时间,但有延迟就有延迟吧,不管了。
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片