Автономное клиентское приложение light-4j не может выйти из основного класса - PullRequest
0 голосов
/ 03 октября 2019

Я создал пакетное задание, которое вызывается из корпоративного планировщика для доступа к микросервису light-4j для выполнения некоторых повседневных задач. Пакетное задание представляет собой отдельное приложение, использующее клиентский модуль light-4j для вызова микросервиса.

Странная вещь случается после того, как работа сделана. Основной класс не завершается автоматически после выполнения задания. Похоже, что все еще работают некоторые потоки, которые не позволяют основному классу завершиться. Когда я переключаю light-4j Http2Client на Apache HttpClient, основной класс выходит изящно. Я делаю что-то неправильно?

1 Ответ

0 голосов
/ 03 октября 2019

В отличие от другого Http-клиента, который является однопоточным. 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

...