Spring 线程池实战
应用场景
老王上线了一个电商平台,最近需要开发一个功能,使用户能够直接点击物流编号查询到物流信息。通过对比,选择了一个快递聚合查询平台作为接入方,但是由于使用的是免费账号,快递聚合平台只允许最多2个并发
,否则查询失败。我们要如何帮助老王去解决这个问题呢?
聪明的程序员小张想了一下,很快就整理出来解决问题的思路:
- 首先用 Httpclient 实现与物流聚合平台的对接
- 创建一个物流查询 Service 类,基于线程接口
- 创建一个 Sping 固定大小线程池
- Controller 接口通过线程池访问物流接口,异步返回
POM.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.suoron.springmvc</groupId>
<artifactId>myShop-threads</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<!-- Apache Http Begin -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.5</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>fluent-hc</artifactId>
<version>4.5.5</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.5</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<!-- Apache Http End -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>