Как включить несколько операторов в конечную точку Apache Camel - Esper?
У меня есть список утверждений Esper, которые я хотел бы выполнить в потоке Apache Camel. Как я могу убедиться, что все утверждения оцениваются для всех сообщений?
Нужно ли иметь отдельный маршрут для каждого оператора Esper (например, из: esper: //...)?
Примечание. Каждый оператор может давать результат в разное время (например, агрегация за 1 секунду, еще одна за 5 секунд и т. Д.).
1 ответ
Согласно документации, каждый верблюжий маршрут запускает отдельный оператор обработки событий и использует результаты. Если у вас есть причина, по которой у вас должен быть один верблюжий маршрут, создайте оператор EPL, который выполняет всю желаемую работу (или, по крайней мере, выбирает подходящие данные для дальнейшей обработки позже в конвейере верблюдов). Альтернативой, как вы предлагаете, является создание нескольких верблюжьих маршрутов, каждый из которых использует компонент esper, с другим оператором EPL. Несколько маршрутов впоследствии можно было объединить в один маршрут, используя один из компонентов внутренней очереди верблюда (seda, vm, direct или jms).
Здесь есть два примера маршрута с исходным кодом.