目前有个需求,将发送到 A 服务的请求复制一份发送到 B 服务,如果 B 服务响应不成功,就把这个请求保存下来以后重发。 有什么好的方法保存这个请求以供重发吗
A,B 服务用的 spring boot,Java 码农
多谢各位大佬
1
infun 2020-05-05 21:53:50 +08:00 1
python 里面可以用装饰器写 retry
Java 应该也有类似的吧 |
2
azh7138m 2020-05-05 21:56:19 +08:00
|
3
opengps 2020-05-05 21:59:43 +08:00 via Android
搜索下 HAR 相关用法,我没具体做过,盲猜这个路径可以尝试
|
4
kaleidoscope OP @infun spring 确实有 retry 框架,我研究研究 多谢大佬!
|
5
kaleidoscope OP @azh7138m 需要手动恢复 B 服务才能重试,可能需要比较久。。这个我也没用过,要研究研究 多谢大佬
|
6
infun 2020-05-05 22:47:51 +08:00 via Android
@kaleidoscope 。。。那么久就应该另起定时任务来做吧,失败了放失败队列,定时去捞失败的重试
|
7
kaleidoscope OP @infun 😂就是不太清楚怎么样把这些请求以一种结构存起来
|
8
nvkou 2020-05-06 03:58:23 +08:00 via Android
问题是谁重发?
客户可能已经离开了,你这个请求从谁那里重发? 如果是保持链接的重试,增加增加 ttfb 时间,那就从反向代理服务器入手。 如果是客户不关注的指令,你可以上队列。 保存请求更像是日志的事情,你要模拟请求当然可以保存下来,http 请求很好保存,但发起人就绝对不是原来的客户了。 请求进反向代理,主服务器返回 400 或 500,请求转次服务器,次服务器反 200 。客户收到 200 |
9
jaylee4869 2020-05-06 10:44:48 +08:00
放到消息队列里。可以存储一个 HttpRequest 这种对象。
|