我一直在尝试寻找和测试不同的解决方案来解决我在 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) -> {...
我的问题是围绕 Camel 动态延迟的能力。是否有一种方法允许开发人员创建一个函数来定义它? Camel 用户是否通过在进程中添加 thread.sleep 函数来创建临时延迟来解决此问题?
最佳答案
您可以在延迟中使用表达式,其中可以使用任何 Camel 语言 ( http://camel.apache.org/languages ),例如使用 bean 语言 ( http://camel.apache.org/bean-language.html ) 调用 bean 上的方法:
from(...)
.delay(method(MyClass.class, "myMethodName"))
...
然后在bean方法中你可以返回任何你喜欢的动态值。或者,如果您想根据消息中的某些信息计算值,您也可以这样做,并让 bean 参数绑定(bind) ( http://camel.apache.org/bean-binding.html ) 来传递此类信息,或者尝试查看简单语言 ( http://camel.apache.org/simple.html ) 是否可以)就足够了。
关于java - Camel 消费者: Dynamic Delay Times,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46781886/