microservices - 独立的 light-4j 客户端应用程序无法从主类退出
问题描述
我已经构建了一个批处理作业,该作业从企业调度程序中调用,以访问 light-4j 微服务来执行一些日常任务。批处理作业是一个独立的应用程序,使用 light-4j 客户端模块来调用微服务。
工作完成后发生了一件奇怪的事情。作业完成后主类不会自动退出。看起来仍然有一些线程正在运行,阻止主类退出。当我将 light-4j Http2Client 切换到 Apache HttpClient 时,主类优雅地退出。难道我做错了什么?
解决方案
与其他单线程的 Http Client 不同。light-4j Http2Client 使用事件循环来异步处理多个请求/响应,就像 Undertow 服务器一样。这确保了最高的吞吐量和最低的延迟;但是,事件循环分配了一个线程池,该线程池在主线程完成后不会关闭。这需要调用 system.exit() 来停止 JVM 应用程序。之后,应用程序中所有正在运行的线程都将停止。
这是使用 Http2Client 的独立应用程序的示例。
推荐阅读
- c++ - 从单独的线程访问单独的文件,这有效吗?
- protractor - 遍历量角器中的表格
- node.js - 尽管在 angular2+ 中发现错误,但仍收到 400 Bad Request
- python - 无法在 DatePicker 使用 Selenium + Python 选择月份和年份
- css - HTML Outlook 电子邮件中的 CSS 表格列自动宽度
- ios - 从每个 TableViewCell 的 2 个文本字段中读取数据
- typescript - TSLint 不适用于 CRA 和 TypeScript
- c++ - 使用 Emscripten 构建静态或共享的 boost 库
- javascript - 成功发布 XHR 请求后,将其呈现到无法正常工作的 url
- angular - Angular 7 url 路由配置