一个独立的light-4j客户端应用程序无法从主类中退出

问题描述 投票:0回答:1

我已经建立了一个批处理作业,该作业被企业调度程序调用以访问light-4j微服务以执行一些日常任务。批处理作业是一个独立的应用程序,使用light-4j客户端模块来调用微服务。

完成工作后发生了一件奇怪的事情。作业完成后,主类不会自动退出。看起来仍然有一些线程在运行,以防止主类退出。当我将light-4j Http2Client切换到Apache HttpClient时,主类正常退出。难道我做错了什么?

microservices batch-processing light-4j
1个回答
0
投票

与其他单线程Http客户端不同。 light-4j Http2Client正在使用事件循环来像Undertow Server一样异步处理多个请求/响应。这样可以确保最高的吞吐量和最低的延迟;但是,事件循环分配了一个线程池,该线程池在主线程完成后不会关闭。这需要调用system.exit()来停止JVM应用程序。之后,该应用程序中所有正在运行的线程将被停止。

这里是使用Http2Client的独立应用程序的示例。

https://github.com/networknt/light-example-4j/blob/release/client/standalone/src/main/java/com/networknt/client/Http2ClientExample.java#L56

© www.soinside.com 2019 - 2024. All rights reserved.