我一直试图找到并测试我在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函数来解决此问题以创建生成班次延迟?
答案 0 :(得分:1)
您可以在延迟中使用表达式,您可以使用任何Camel语言(elixir),例如使用bean语言(http://camel.apache.org/languages)调用bean上的方法:
from(...)
.delay(method(MyClass.class, "myMethodName"))
...
然后在bean方法中,您可以返回任何您喜欢的动态值。或者,如果您想根据消息中的某些信息计算值,您也可以执行此操作并使用bean参数绑定(http://camel.apache.org/bean-language.html)来传递此类信息,或者尝试查看是否使用简单语言({ {3}})就足够了。