使用Spring Boot在Java中发送异步HTTP请求

在Spring Boot应用中遇到发送异步HTTP请求时的内存溢出和处理速度慢的问题。文章讨论了Java异步执行与I/O阻塞的关系,并指出线程池配置和无阻塞I/O的重要性。提到了Apache Async HTTP Client可能是一个解决方案,并提供了关于调整线程池大小和使用无界队列可能导致内存问题的见解。建议将大量请求分批处理以减轻系统负担。
摘要由CSDN通过智能技术生成

我正在开发一个需要连续测试1000个代理服务器的应用程序.该应用程序基于Spring Boot.

 

我正在使用的当前方法是@Async装饰的方法,该方法采用代理服务器并返回结果.

我经常收到OutOfMemory错误,处理速度很慢.我认为这是因为每个异步方法都是在一个单独的线程中执行的,该线程在I / O上受阻?

我到处都读到Java异步的知识,人们将线程中的并行执行与无阻塞IO混合在一起.在Python世界中,有一个异步库,该库在一个线程中执行I / O请求.当一个方法正在等待服务器的响应时,它开始执行其他方法.

我认为就我而言,我需要这样的东西,因为Spring的@Async不适合我.有人可以帮我消除困惑,并建议我如何应对这一挑战?

我想同时检查100个代理,而又不增加过多的负担.
我已经阅读过有关Apache Async HTTP Client的信息,但我不知道它是否合适?

这是我正在使用的线程池配置:

 

    public Executor proxyTaskExecutor() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(Runtime.getRuntime().availableProcessors() * 2 - 1);
        executor.setMaxPoolSize(100);
        executor.setDaemon(true);
        return executor
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值