У меня есть загрузочное приложение Spring, которое использует Apache верблюд. Это отдельное приложение, которое опрашивает каталог с компонентом Camel File, обрабатывает содержимое и отправляет его Kafka с компонентом Camel Kafka. Я хотел бы, чтобы приложение было недолгим, поэтому я хочу, чтобы оно само завершалось после заданных секунд простоя. Я использую зависимость camel-spring-boot-starter, чтобы в настройках приложения я мог установить максимальные секунды простоя:
camel.springboot.duration-max-idle-seconds=20
Через 20 секунд я вижу, что контекст верблюда и мой веб-сервер ( используется как исполнительный механизм) корректно завершаются, но процесс java не возвращает код выхода 0. Процесс зависает как этот навсегда.
Используя аналогичное свойство, если на этот раз я установлю camel.springboot.duration-max-seconds=20
, верблюд контекст и журналы выключения веб-сервера абсолютно одинаковы и корректно завершают работу, а процесс Java возвращает код завершения 0, который я ожидал.
Вы сталкивались с подобным поведением? Почему duration-max-idle-секунд делает постепенное отключение верблюда, но не завершает процесс Java?