51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Feign接收超大Json与超时关闭

这是我在实习期间使用Feign遇到的两个坑,顺手便记录下来。

Feign数据量过大而导致json截断的问题 {#Feign数据量过大而导致json截断的问题}

业务要求从指定的某些接口获取数据然后解析,有一个接口不提供分页参数,导致传递的数据量非常大,从而导致json被截断,解析失败。报错大致如下:

|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 | Suppressed: com.alibaba.fastjson.JSONException: not close json text, token : ident at com.alibaba.fastjson.parser.DefaultJSONParser.close(DefaultJSONParser.java: 1556 ) at com.alibaba.fastjson.JSONReader.close(JSONReader.java: 179 ) at com.kedacom.edu.component.course.he.service.impl.SchoolCourseServiceImpl.getCourseInfos(SchoolCourseServiceImpl.java: 137 ) ... 20 common frames omitted |

通过日志发现是json末尾部分未闭合,后续发现服务端支持gzip,改用okhttp的feign客户端同时启用gzip压缩后解决。

Feign连接超时自动关闭的问题 {#Feign连接超时自动关闭的问题}

发现这个问题的原因是因为有几个接口获取json解析时经常空指针,刚开始没意识到,以为是场地的限流策略,于是添加线程休眠及重试机制,无果。后续把feign的 loggerLevel 设置为 full 后发现没获取到数据连接就被关闭了。解决方案:延长超时时间。

|---------------------|------------------------------------------------------------------------------------| | 1 2 3 4 5 6 | feign: client: config: default: connectTimeout: 500000 readTimeout: 500000 |

赞(0)
未经允许不得转载:工具盒子 » Feign接收超大Json与超时关闭