根据查询参数调整Camel请求

时间:2016-06-17 02:30:14

标签: apache-camel

我有一条如下的骆驼路线: -

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

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

我已经完成了throttle模式。但有没有办法可以根据查询/标头参数获得速率限制/限制(例如,如果在请求中设置了debug = 1,那么我们希望将请求限制为10 req / sec)。

2 个答案:

答案 0 :(得分:2)

是的,它可行,但你最初会假设的更复杂一点。从技术上讲,这是一个重复的问题,所以我只提供以下链接:

Apache Camel - Dynamically changing throttle values

基本上,短版本是你必须利用camel设置的jmx调用。在Camel 2.16+中,这更容易。但是,在列出的Camel 2.15中还有一个不太方便的工作方式。祝你的项目好运!

答案 1 :(得分:0)

我能够使用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);