我有一条如下的骆驼路线: -
from("jetty:http://localhost:8888/orchestratorservice").process(processor);
from("direct:setStatusToReadyToShip").to("bean:orderHelper?method=setStatusToReadyToShip")
我已经完成了throttle模式。但有没有办法可以根据查询/标头参数获得速率限制/限制(例如,如果在请求中设置了debug = 1,那么我们希望将请求限制为10 req / sec)。
答案 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);