骆驼消费者:动态延迟时间

时间:2017-10-17 03:09:39

标签: java apache-camel

我一直试图找到并测试我在Camel的延迟属性中发现的问题的不同解决方案。似乎Camel延迟只能在运行时设置。我已使用以下代码对此进行了测试,并在随后的民意调查中更新了变量“CAMEL_DELAY_TIME_IN_MILLI_SECONDS”。

        from(incomingEndpoint)
            .delay(CAMEL_DELAY_TIME_IN_MILLI_SECONDS)
            .threads(MAX_NUMBER_OF_CAMEL_THREADS)
            .process((exchange) -> {...

我的问题是围绕Camels的功能进行动态延迟。有没有一种方法允许开发人员创建一个函数来定义它? Camel用户是否通过在进程中添加thread.sleep函数来解决此问题以创建生成班次延迟?

1 个答案:

答案 0 :(得分:1)

您可以在延迟中使用表达式,您可以使用任何Camel语言(),例如使用bean语言(http://camel.apache.org/languages)调用bean上的方法:

from(...)   
  .delay(method(MyClass.class, "myMethodName"))   
  ...

然后在bean方法中,您可以返回任何您喜欢的动态值。或者,如果您想根据消息中的某些信息计算值,您也可以执行此操作并使用bean参数绑定(http://camel.apache.org/bean-language.html)来传递此类信息,或者尝试查看是否使用简单语言({ {3}})就足够了。