Несколько маршрутов в Apache Camel - лучшая практика - PullRequest
0 голосов
/ 16 сентября 2018

Я реализовал планировщик верблюдов Apache, который выполняет задачу с фиксированным интервалом времени. количество задач, которые нужно выполнить, выросло, и я не могу продолжить с тем же подходом или создать несколько построителей маршрутов.

Подход сейчас, вызвать БД, получить все сконфигурированные подробности об отдыхе и выполнить итерацию в методе confuguire routerbuilder и построить маршруты.

пример кода:

public void configure() {
    for(int i=0; i< list.length;i++){
        from("quartz://myTimer?trigger.repeatInterval=2000&trigger.repeatCount=-1")
            .setBody().simple("Current time is ${header.firedTime}")
            .to("stream:out");  
    }
}

Здесь у меня есть только один класс routebuilder, метод configure имеет цикл for, который создает несколько маршрутов.

1 Ответ

0 голосов
/ 17 сентября 2018

Это подход, который не будет хорошо масштабироваться.Если у вас есть 10 или 100 «списков» предметов - тогда отлично.

Если у вас есть 1000, 10 000 или 1 000 000 маршрутов, определенных в RouteBuilder - будет ли это работать?Я не знаю.

Маршрут верблюда предназначен для моделирования потока данных, а не для представления самих данных.Данные должны проходить через маршруты.

Я бы перемоделировал ваше решение и создал бы очередь в памяти через конечную точку seda:, а затем поместил бы x элементов данных (может быть просто java.lang.Integer) вseda:myqueue.

Затем создайте второй маршрут, который асинхронно потребляет от seda:myqueue и обрабатывает данные, в зависимости от того, какое время вы выберете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...