0

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

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

4

1 回答 1

0

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

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

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

于 2019-10-03T19:13:52.553 回答