Дросселирование запросов Camel на основе параметра запроса

У меня есть верблюжий маршрут, как показано ниже: -

from("jetty:http://localhost:8888/orchestratorservice").process(processor);

from("direct:setStatusToReadyToShip").to("bean:orderHelper?method=setStatusToReadyToShip")

Я использовал шаблон дросселирования. Но есть ли способ получить ограничение скорости/дросселирование на основе параметра запроса/заголовка (например, если в запросе установлено значение debug=1, то мы хотим ограничить запросы до 10 запросов/сек).


person tuk    schedule 17.06.2016    source источник


Ответы (2)


Да, это выполнимо, но немного сложнее, чем вы предполагали изначально. Технически это дублирующийся вопрос, поэтому я просто предоставлю ссылку ниже:

Apache Camel — динамически изменяющиеся значения дроссельной заслонки

По сути, короткая версия заключается в том, что вам нужно использовать вызов jmx, который устанавливает верблюд. В Camel 2.16+ это намного проще. Тем не менее, в Camel 2.15 также есть не очень удобный обходной путь. Желаем удачи в вашем проекте!

person Matthew Fontana    schedule 17.06.2016

Я смог решить это с помощью Predicate. Ниже код работал для меня: -

Predicate isDebug = header("debug").isEqualTo("true");
from("jetty:http://localhost:8888/orchestratorservice")     
.choice()
    .when(isDebug).throttle(5).timePeriodMillis(1000).rejectExecution(true).process(processor)
.endChoice()
.otherwise()
   .process(processor);
person tuk    schedule 20.06.2016