#multithreading #apache-camel
#многопоточность #apache-camel
Вопрос:
Я запускаю основное автономное приложение Camel с помощью планировщика Unix.
Он инициирует маршруты; Но, поскольку у меня есть Thread.sleep(time) после context.start() .
Теперь сначала выполняется приложение; что бы ни было в маршрутах; и когда обработка маршрута завершается (stop (), приложение все еще работает и завершается, когда время ожидания потока истекло.
Есть идеи, как полностью остановить автономное приложение после завершения моего маршрута?
Ниже приведен фрагмент кода для справки:
SimpleRegistry sr = new SimpleRegistry();
sr.put("masterdata", dataSource);
CamelContext context = new DefaultCamelContext(sr);
try {
context.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("timer://alertstrigtimer?period=60samp;repeatCount=1")....
from("etc").....
from("etc").....
from("etc").stop()
}})
context.start();
Thread.sleep(30000);
} catch (Exception e) {
LOGGER.warn("configure(): Exception in creationg flow:", e);
}
Есть ли какой-либо способ в camel или может быть в java, чтобы убить поток после того, как маршрут camel остановит всю обработку.
Ответ №1:
У вас есть разные варианты, вот некоторые, которые я бы рассмотрел:
- используйте camel-main и настройте его на выключение, когда будет выполнено определенное количество обменов
- используйте политику маршрутизации и отключите контекст camel в соответствии с вашим собственным правилом