如何使用Java DSL将类型对象的组件参数设置为路由?

时间:2018-01-31 07:08:29

标签: java apache-camel jms camel-jms

我的目标是将Camel与其JMS组件一起使用。

路线配置如下所示 -

from("jms:queue:test").to(mybean) 

我想添加类型'参数'的选项并在此路由中键入'object' - 例如选项'jmsMessageType'。

我看到其他一些帖子谈到在路由定义中使用setProperty(),但我找不到明确的答案。 “字符串”和数字类型的选项可以附加到URI,但不能附加到对象。

JMS有一个taskExecutor选项,但我如何将这个实例添加到URI以进行路由。

2 个答案:

答案 0 :(得分:1)

我认为您将参数选项混淆。

您所指的

jmsMessageType 是Camel的 jms 组件的一个选项。每个组件都有很多选项,您可以通过附加"?"来使用它们。字符。例如

from("jms:queue:test?jmsMessageType=text").to(mybean) 

更具体地说,对于jms组件,可以在http://camel.apache.org/jms.html中找到有用的选项(参见“常见和高级选项”部分)

属性不同,它与组件无关,但与通过端点传递的 Exchange 消息无关。更多详情请见Passing values between processors in apache camel

答案 1 :(得分:1)

我必须通过将实例添加到自定义注册表并使用端点URI

来解决此问题

来自官方Apache Camel页面

  

来自Camel 2.0:

     

使用URI语法配置端点时,您现在可以引用bean   在注册表中使用#表示法。如果参数值开始   然后使用#符号,Camel将在Registry中查找一个bean的bean   给定类型。例如:

     

文件://收件箱分拣=#mySpecialFileSorter