【问题标题】:Camel - Property parameter passing to a method is not working in choice/whenCamel - 传递给方法的属性参数在选择/何时不起作用
【发布时间】:2017-04-03 04:24:57
【问题描述】:

我正在使用 Spring (v4.3.2.RELEASE) 使用 Camel (v2.17.3),并且在将属性参数传递给方法时遇到问题。

我试图做一个选择/何时,但它传递了纯字符串而不是属性 {{elmu.inMask}} 的值):

    <choice>
        <when>
            <method ref="eleoHelper" method="checkInMask(${exchange}, ${file:name}, {{elmu.inMask}})" />
            <log message="${body}" />
        </when>
    </choice>

最后,我发现当我在 setHeader 中使用相同的(以及标题的值作为选择/何时的解决方法)时,它运行良好。

    <setHeader headerName="toCollect">
        <method ref="eleoHelper" method="checkInMask(${exchange}, ${file:name}, {{elmu.inMask}})" />
    </setHeader>

但我有几个属性,我不喜欢这种解决方法。

属性bean定义:

<bean id="properties" class="org.apache.camel.component.properties.PropertiesComponent">
    <property name="location" value="file:ELEOSFTP.properties" />
    <property name="encoding" value="UTF-8" />
</bean>

你告诉我我的代码有什么问题以及如何在选择/何时使用属性值?

【问题讨论】:

    标签: apache-camel


    【解决方案1】:

    这些是 bean 属性。我猜你需要创建 setter/getter 和一个类变量来映射属性。

    &lt;cm:properties&gt; 中定义的标准属性可以按照您所做的方式引用。

    【讨论】:

    • 谢谢。我的项目是一个简单的spring xml,而不是OSGI。我从来没有使用过 标签,你的其他建议也没有。
    • 我是 Camel 的新手。我可以做解决方法(但不想要),我真的不明白为什么在 setHeader 工作时不工作替换?
    • 好的,在这种情况下,您需要桥接 Camel 和 Spring。请参阅此处:camel.apache.org/properties.html 在桥接骆驼和弹簧部分中。在此处查看更多信息:camel.apache.org/…
    • 谢谢。我阅读了该部分,但找不到如何设置网桥的编码。但我试了一下:结果是一样的。失败时调用的方法:
    【解决方案2】:

    试试:

    method=checkInMask($exchangeProperty.<property name>)
    

    【讨论】:

    • 谢谢,但我在文件中的属性不在 Exchange 中。
    猜你喜欢
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 2014-03-22
    • 2011-04-22
    • 1970-01-01
    • 2017-04-14
    • 2017-08-20
    • 1970-01-01
    相关资源
    最近更新 更多