应用场景
老王上线了一个电商平台,最近需要开发一个功能,使用户能够直接点击物流编号查询到物流信息。通过对比,选择了一个快递聚合查询平台作为接入方,但是由于使用的是免费账号,快递聚合平台只允许最多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> <artifactId>freemarker