Как использовать верблюжью отправку пакетного http-запроса?

У меня 1 000 000 идентификаторов, и мне нужно вызывать REST API один раз в день для каждого пользователя. Как я могу использовать Camel для отправки пакетных HTTP-запросов?

Мое текущее решение состоит в том, чтобы создать компонент HTTP для каждого идентификатора, используя Quartz. Но это создаст 1 000 000 рабочих мест Quartz, производительность плохая.

У меня есть две идеи:

  1. Если бы Camel мог предоставить пакетный API, я мог бы использовать его для отправки 1 000 000 запросов на один и тот же URL, но с разными параметрами. Это одна работа Quartz. Поддерживает ли Camel этот API?

  2. Каждый HTTP-запрос посещает только один раз и использует весеннее расписание для управления. Но для каждого запроса Camel будет опрашивать сервер. Как я могу заставить Camel вызывать REST API только один раз?

Коды здесь:

// ids is a List, contains 1,000,000 id
for (final String id : ids) {
    context.addRoutes(new RouteBuilder() {

        @Override
        public void configure() throws Exception {
            from(String.format("quartz://%s/?cron=0+0+12+*+*+?", id))
            .to(String.format("http:xxx.com?id=%s", id))
            .to("file:to");
        }

    });
}

person terrymanu    schedule 02.08.2013    source источник


Ответы (1)


Было бы сложнее создать миллион маршрутов для отправки запроса с другим идентификатором. с помощью бина можно определить цикл отправки запроса в методе бина.

Кстати, вы можете изменить идентификатор с заголовком сообщения «CamelHttpQuery».

person Willem Jiang    schedule 05.08.2013
comment
любой пример? вы имеете в виду изменение идентификатора с заголовком сообщения CamelHttpQuery может объединять несколько запросов в один? - person terrymanu; 05.08.2013