使用队列解决高并发下使用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;
    }

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

相关文章
|
存储 Java
高并发编程之多线程锁和Callable&Future 接口
高并发编程之多线程锁和Callable&Future 接口
230 1
|
3月前
|
存储 监控 NoSQL
140_异步推理:队列管理框架 - 使用Celery处理高并发请求的独特设计
在大型语言模型(LLM)部署的实际场景中,推理服务的并发处理能力直接影响用户体验和系统稳定性。随着LLM应用的普及,如何高效处理大量并发请求成为部署优化中的关键挑战。传统的同步请求处理方式在面对突发流量时容易导致系统过载,响应延迟增加,甚至服务崩溃。异步推理通过引入队列管理机制,能够有效缓冲请求峰值,平滑系统负载,提高资源利用率,从而为LLM服务提供更稳定、更高效的并发处理能力。
|
开发框架 监控 .NET
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
通过本文的介绍,希望您能深入理解并掌握ASP.NET WebForms中调用ASMX WebService接口的方法和技巧,并在实际项目中灵活运用这些技术,提高开发效率和应用性能。
844 5
|
XML 前端开发 Java
JAVA调试webservice接口
JAVA调试webservice接口
460 1
|
XML Java API
使用WebService接口进行数据通信
使用WebService接口进行数据通信
|
设计模式 安全 NoSQL
Java面试题:设计一个线程安全的单例模式,并解释其内存占用和垃圾回收机制;使用生产者消费者模式实现一个并发安全的队列;设计一个支持高并发的分布式锁
Java面试题:设计一个线程安全的单例模式,并解释其内存占用和垃圾回收机制;使用生产者消费者模式实现一个并发安全的队列;设计一个支持高并发的分布式锁
207 0
|
XML Java API
使用WebService接口进行数据通信
使用WebService接口进行数据通信
|
存储 监控 BI
HIS系统是什么?一套前后端分离云HIS系统源码 接口技术RESTful API + WebSocket + WebService
医院管理信息系统(全称为Hospital Information System)即HIS系统。 常规模版包括门诊管理、住院管理、药房管理、药库管理、院长查询、电子处方、物资管理、媒体管理等,为医院管理提供更有力的保障。 HIS系统以财务信息、病人信息和物资信息为主线,通过对信息的收集、存储、传递、统计、分析、综合查询、报表输出和信息共享,及时为医院领导及各部门管理人员提供全面、准确的各种数据。 门诊医生工作站采用下拉式汉化菜单,界面友好,实用性强,设有与门诊挂号收费系统、医技科室信息系统、住院结算信息系统的软件接口。
907 1
|
Java
高并发编程之什么是 Lock 接口
高并发编程之什么是 Lock 接口
168 1
|
消息中间件 缓存 NoSQL
高并发缓存队列防止溢出解决方案
高并发缓存队列防止溢出解决方案
523 0