(办公)访问其他系统接口httpClient,异步访问

Posted historylyt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(办公)访问其他系统接口httpClient,异步访问相关的知识,希望对你有一定的参考价值。

  访问其他系统接口httpClient,但是都是同步的,同步意味当前线程是阻塞的,只有本次请求完成后才能进行下一次请求;异步意味着所有的请求可以同时塞入缓冲区,不阻塞当前的线程;

     httpClient请求,访问其他系统可能无响应,锁死,访问请求上线种种问题,这些问题就像苍蝇嗡嗡嗡的在你耳边,那么解决他可以设置超时时间,但是访问一个接口将近1分钟,这个是不应该的,所以还是要异步请求其他系统的接口,我们可以使用多线程来做,建立一个线程池,只指定10个线程,然后调用方法。(好主意)

   下面是举个springmvc的例子:

    1.往springmvc里添加线程池

application.xml里添加
 xmlns:task="http://www.springframework.org/schema/task"
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
        <!-- 核心线程数 -->
        <property name="corePoolSize" value="10" />
        <!-- 最大线程数 -->
        <property name="maxPoolSize" value="10" />
        <!-- 队列最大长度 -->
        <property name="queueCapacity" value="500" />
        <!-- 线程池维护线程所允许的空闲时间,默认为60s -->
        <property name="keepAliveSeconds" value="200" />
    </bean>

     2.操作:

//自定义线程池:
 @Resource
private TaskExecutor taskExecutor;
try 
      taskExecutor.execute(new Runnable() 
        public void run() 
          //这里编写处理业务代码
//注意方法传递参数的时候,尽量使用基本类型的值。
); catch (Exception e) e.printStackTrace();

 

以上是关于(办公)访问其他系统接口httpClient,异步访问的主要内容,如果未能解决你的问题,请参考以下文章

生产环境项目问题记录系列:同步方法调用异步方法

HttpClient--使用HttpClient进行Get Post请求访问

Java的HttpClient如何去支持无证书访问https

SpringBoot项目使用hutool工具进行HttpClient接口调用的处理(文件上传)

使用HttpClient访问接口(Rest接口和普通接口)

CloseableHttpAsyncClient实现Post方式HTTP异步调用接口