对接高德接口心得

本篇不涉及具体接口,接口均为高德定制开发,只是总结其中遇到的问题。
通过一段时间调用高德接口总结如下:
1.接口延迟比较严重
2.经常返回接口内部异常
3.接口经常超时

针对上述问题总结:

针对报错

调用高德接口必须做好重试准备
由于调用的接口比较多
可以使用函数式编程方式进行重试

private String doPoiRetry(Function<Object, String> function, int time) {

        try {
            return function.apply(null);
        } catch (Exception e) {
            if (time == 3) {
                throw new BizException("高德接口重试三次后仍报错");
            }
            time++;
            try {
                Thread.sleep(200);
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
            return doPoiRetry(function, time);
        }
    }

递归执行接口方法并且由于接口tpc有限因此需要sleep一下。

针对于速度

当一个月免需要使用多个高德接口时使用多线程多个接口异步调用,全部返回结果后返回前端。可节省等待单个接口的时间。但是总体还是挺慢的。接口获取到数据后可以保存到本地数据库中,项目中使用了mongo,总体使用感觉不是很好,还是推荐mysql,mysql也支持json格式字段,使用上很方便,可以把关键通用查询条件作为单独字段保存方便维护查询。再次使用相同接口切参数相同时从数据库获取可明显提升效率但也要多线程去访问。

望大家提出宝贵意见。拱手抱拳~!

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐