最近在使用 HttpAsyncClient 时候发现一个问题
发现如果需要发送大量的 http 请求,1000 + 甚至更多,就会导致从 HttpAsyncClient 池中获取到的连接无法自动关闭 或者说 HttpAsyncClient 对象的 status 为 active 或者直接 stoped
看源码
public CloseableHttpAsyncClientBase(
final NHttpClientConnectionManager connmgr,
final ThreadFactory threadFactory,
final NHttpClientEventHandler handler) {
super();
this.connmgr = connmgr;
if (threadFactory != null && handler != null) {
this.reactorThread = threadFactory.newThread(new Runnable() {
@Override
public void run() {
try {
final IOEventDispatch ioEventDispatch = new InternalIODispatch(handler);
connmgr.execute(ioEventDispatch);
} catch (final Exception ex) {
**log.error("I/O reactor terminated abnormally", ex);**
} finally {
status.set(Status.STOPPED);
}
}
});
} else {
this.reactorThread = null;
}
this.status = new AtomicReference<Status>(Status.INACTIVE);
}
这个问题以后在解决