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

How do I set a component parameter of type object to a route using Java DSL?

我的 objective 是使用 Camel 及其 JMS 组件。

路由配置如下所示-

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

我想向这条路线添加类型 'parameter' 和类型 'object' 的选项 - 例如选项 'jmsMessageType'。

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

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

我认为您混淆了 参数 选项

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

我必须通过将实例添加到自定义注册表并从端点 URI 使用它们来解决此问题

来自 Apache Camel 官方页面

From Camel 2.0:

When configuring endpoints using URI syntax you can now refer to beans in the Registry using the # notation. If the parameter value starts with a # sign then Camel will lookup in the Registry for a bean of the given type. For instance:

file://inbox?sorter=#mySpecialFileSorter