Apache camel ApacheCamel-动态更改节流阀值
任何人都可以给出一个示例,说明如何通过使用Throttler处理器实例或apachecamel中的throttle元素来动态更改maxRequestsPerPeriod吗?(参考-) 我们不能将表达式与标头一起使用,因为如果缺少标头,则节流器将使用旧值。我们需要的是,在基于某些条件的bean中,我们必须更新throttle值,以便在下次更新之前使用它。在我们的例子中,我们不能将消息头用于此目的 我们如何在路由中导航运行时处理器并找到节流器来动态更改它?请帮我拿一个样品Apache camel ApacheCamel-动态更改节流阀值,apache-camel,Apache Camel,任何人都可以给出一个示例,说明如何通过使用Throttler处理器实例或apachecamel中的throttle元素来动态更改maxRequestsPerPeriod吗?(参考-) 我们不能将表达式与标头一起使用,因为如果缺少标头,则节流器将使用旧值。我们需要的是,在基于某些条件的bean中,我们必须更新throttle值,以便在下次更新之前使用它。在我们的例子中,我们不能将消息头用于此目的 我们如何在路由中导航运行时处理器并找到节流器来动态更改它?请帮我拿一个样品 谢谢。您可以使用JMX等管
谢谢。您可以使用JMX等管理api对其进行更改
只是你知道mbean的id。您可以在路由中分配id,因此它使用的是已知id,而不是自动生成的id。顺便说一句,这也使得使用纯JMX api查找mbean变得更容易。谢谢克劳斯。我们将在即将发布的Camel 2.16版本中检查JMX mbean 现在,以下解决方案适用于骆驼2.15.2: Java DSL:
from("direct:start")
.routeId("throttleroute")
.throttle(ExpressionBuilder.beanExpression("throttleBean","getThrottle"))
.timePeriodMillis(2000)
.to("jms:test.MyQueue")
.beanRef("throttleBean", "receiveData");
春季DSL:
<route id="throttleroute">
<from uri="direct:start" />
<throttle timePeriodMillis="2000">
<method ref="throttleBean" method="getThrottle" />
<to uri="jms:test.MyQueue" />
</throttle>
<to uri="bean:throttleBean?method=receiveData" />
</route>
这里throttleBean.getThrottle()方法将具有动态生成和返回所需的throttle值的逻辑