我已经建立了一个批处理作业,该作业被企业调度程序调用以访问light-4j微服务以执行一些日常任务。批处理作业是一个独立的应用程序,使用light-4j客户端模块来调用微服务。
完成工作后发生了一件奇怪的事情。作业完成后,主类不会自动退出。看起来仍然有一些线程在运行,以防止主类退出。当我将light-4j Http2Client切换到Apache HttpClient时,主类正常退出。难道我做错了什么?
与其他单线程Http客户端不同。 light-4j Http2Client正在使用事件循环来像Undertow Server一样异步处理多个请求/响应。这样可以确保最高的吞吐量和最低的延迟;但是,事件循环分配了一个线程池,该线程池在主线程完成后不会关闭。这需要调用system.exit()来停止JVM应用程序。之后,该应用程序中所有正在运行的线程将被停止。
这里是使用Http2Client的独立应用程序的示例。