Как включить несколько операторов в конечную точку Apache Camel - Esper?

У меня есть список утверждений Esper, которые я хотел бы выполнить в потоке Apache Camel. Как я могу убедиться, что все утверждения оцениваются для всех сообщений?

Нужно ли иметь отдельный маршрут для каждого оператора Esper (например, из: esper: //...)?

Примечание. Каждый оператор может давать результат в разное время (например, агрегация за 1 секунду, еще одна за 5 секунд и т. Д.).

1 ответ

Решение

Согласно документации, каждый верблюжий маршрут запускает отдельный оператор обработки событий и использует результаты. Если у вас есть причина, по которой у вас должен быть один верблюжий маршрут, создайте оператор EPL, который выполняет всю желаемую работу (или, по крайней мере, выбирает подходящие данные для дальнейшей обработки позже в конвейере верблюдов). Альтернативой, как вы предлагаете, является создание нескольких верблюжьих маршрутов, каждый из которых использует компонент esper, с другим оператором EPL. Несколько маршрутов впоследствии можно было объединить в один маршрут, используя один из компонентов внутренней очереди верблюда (seda, vm, direct или jms).

Здесь есть два примера маршрута с исходным кодом.

Другие вопросы по тегам