使用队列解决高并发下使用Client对象调用webService接口

简介: 使用队列解决高并发下使用Client对象调用webService接口

解释:在高并发情况下,重复的创建Client对象会大量占用内存,并且开销昂贵,将其保存到队列当中,避免重复创建对象;调用Client的时候先从队列中取,如果有则使用队列中的Client,如果没有则创建,最后都还将client对象重新放入队列供下次使用。

注:同一客户端同一时刻只能被一个线程消费,否则可能会因争用导致莫名其妙的错误,所以阻塞队列。

代码示例:

/**
 * 获取Client工具类--使用队列存放client防止并发
 * @author : jiagang
 * @date : Created in 2022/3/7 10:30
 */
public class ClientUtil {
    private static final BlockingQueue<Client> blockingQueue = new LinkedBlockingQueue<>(50);
    public static Client getClient() throws InterruptedException {
        Client client = blockingQueue.poll();
        if(client == null){
            JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance();
            client = clientFactory.createClient("http://xxx/xxx/xxx?wsdl");
        }
        HTTPConduit conduit = (HTTPConduit) client.getConduit();
        HTTPClientPolicy policy = new HTTPClientPolicy();
        policy.setConnectionTimeout(5000);
        policy.setAllowChunking(false);
        policy.setReceiveTimeout(5000);
        conduit.setClient(policy);
        // 用完之后将client再放入队列中
        // blockingQueue.put(client); //队列满了会阻塞
        blockingQueue.offer(client);
        return client;
    }

文章持续更新,可以关注下方公众号或者微信搜一搜「 最后一支迷迭香 」第一时间阅读,获取更完整的链路资料。

相关文章
|
1月前
|
存储 Java
高并发编程之多线程锁和Callable&Future 接口
高并发编程之多线程锁和Callable&Future 接口
47 1
|
SQL 运维 监控
高并发接口超时时间过长,导致服务雪崩
高频访问接口超时时间过长,导致服务雪崩
446 0
高并发接口超时时间过长,导致服务雪崩
|
1月前
|
存储 监控 BI
HIS系统是什么?一套前后端分离云HIS系统源码 接口技术RESTful API + WebSocket + WebService
医院管理信息系统(全称为Hospital Information System)即HIS系统。 常规模版包括门诊管理、住院管理、药房管理、药库管理、院长查询、电子处方、物资管理、媒体管理等,为医院管理提供更有力的保障。 HIS系统以财务信息、病人信息和物资信息为主线,通过对信息的收集、存储、传递、统计、分析、综合查询、报表输出和信息共享,及时为医院领导及各部门管理人员提供全面、准确的各种数据。 门诊医生工作站采用下拉式汉化菜单,界面友好,实用性强,设有与门诊挂号收费系统、医技科室信息系统、住院结算信息系统的软件接口。
54 1
|
1月前
|
Java
高并发编程之什么是 Lock 接口
高并发编程之什么是 Lock 接口
33 1
|
9月前
|
网络安全 网络架构
https请求SOAP webService接口
https请求SOAP webService接口
92 0
|
11月前
|
存储 Java 数据安全/隐私保护
项目实战典型案例15——高并发环境下由于使用全局变量导致数据混乱 高并发环境下对象被大量创建,导致GC并是CPU飙升
项目实战典型案例15——高并发环境下由于使用全局变量导致数据混乱 高并发环境下对象被大量创建,导致GC并是CPU飙升
114 0
项目实战典型案例15——高并发环境下由于使用全局变量导致数据混乱 高并发环境下对象被大量创建,导致GC并是CPU飙升
|
10月前
|
NoSQL 前端开发 Java
高并发下接口幂等性解决方案
高并发下接口幂等性解决方案
|
10月前
|
安全 Java 开发者
【Java|多线程与高并发】JUC中常用的类和接口
JUC是Java并发编程中的一个重要模块,全称为Java Util Concurrent(Java并发工具包),它提供了一组用于多线程编程的工具类和框架,帮助开发者更方便地编写线程安全的并发代码。
|
10月前
|
XML JSON 网络协议
webService接口对接医院lis系统接口
webService接口对接医院lis系统接口
250 0
|
XML 测试技术 数据安全/隐私保护
【SoapUI、Postman、WebServiceStudio、Jmeter】接口测试工具结合测试webservice接口(发送XML格式参数)
【SoapUI、Postman、WebServiceStudio、Jmeter】接口测试工具结合测试webservice接口(发送XML格式参数)
244 0