【问题标题】:How do I set a component parameter of type object to a route using Java DSL?如何使用 Java DSL 将 object 类型的组件参数设置为路由?
【发布时间】:2018-07-10 05:24:32
【问题描述】:

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

路由配置如下所示-

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

我想在此路由中添加类型“参数”和类型“对象”的选项 - 例如选项“jmsMessageType”。

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

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

【问题讨论】:

    标签: java apache-camel jms camel-jms


    【解决方案1】:

    我认为您将 parameteroption 混淆了。

    您所指的

    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 中的选项?更新问题以避免混淆。
    • 所以要传递一个你放 jmsMessageType=Object 的对象。根据 JMS 组件文档,您必须先将对象设置为 Exchange In 正文,然后将其与 jms 组件一起发送。也许这对你有帮助stackoverflow.com/questions/18129983/…
    • 我仍然不清楚如何在端点中设置对象类型的参数。
    【解决方案2】:

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

    来自 Apache Camel 官方页面

    来自骆驼 2.0:

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

    file://inbox?sorter=#mySpecialFileSorter

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-16
      • 1970-01-01
      • 1970-01-01
      • 2016-11-25
      • 1970-01-01
      相关资源
      最近更新 更多