【问题标题】:Camel property placeholder booleanCamel 属性占位符布尔值
【发布时间】:2021-10-07 16:54:08
【问题描述】:

我的属性文件中有一个属性:

glob.dev_environment=true

glob.dev_environment=false

现在我尝试了以下方法:

<route id="emailMonitor" autoStartup="${!glob.dev_environment}">
    <from uri="{{imapURL}}" />
    <bean ref="attachmentProcessor"/>
</route>  

<route id="emailMonitor" autoStartup="${not glob.dev_environment}">
    <from uri="{{imapURL}}" />
    <bean ref="attachmentProcessor"/>
</route>  

<route id="emailMonitor" autoStartup="{{!glob.dev_environment}}">
    <from uri="{{imapURL}}" />
    <bean ref="attachmentProcessor"/>
</route>  

<route id="emailMonitor" autoStartup="{{not glob.dev_environment}}">
    <from uri="{{imapURL}}" />
    <bean ref="attachmentProcessor"/>
</route>  

<route id="emailMonitor" autoStartup="{{glob.dev_environment == 'false'}}">
    <from uri="{{imapURL}}" />
    <bean ref="attachmentProcessor"/>
</route>  

<route id="emailMonitor" prop:autoStartup="!glob.dev_environment">
    <from uri="{{imapURL}}" />
    <bean ref="attachmentProcessor"/>
</route>  

我在这里有点疯了。如何让它评估 XML DSL 中的布尔值? 是的,我读过this sectionthis section。 我敢打赌,改成glob.prod_environment 会更容易,因为XML DSL 可能无法处理布尔运算。我对吗?这是怎么回事?

【问题讨论】:

  • 您可以测试{{!glob.dev_environment}} 是否适用于骆驼路线,如果可以,则表明该语法根本不受路由自动启动字段的支持。但是,我建议不要使用 dev_environment 之类的配置,而是建议使用 email.monitor.autostartup 之类的单独配置,然后设置默认值以使其与开发环境匹配,或者有单独的配置文件开发、测试和生产。
  • 您使用什么 Camel 版本,如 ! negate 在 Camel 3.x 版本中添加
  • 克劳斯,我使用的是 Camel 2.21.0。用于评估 2.21.0 的否定布尔属性值的任何解决方案? {{glob.prod_environment}} 是解决方案吗,因为否定不可用?我们不太可能升级到 v3。 Pasi - 谢谢,每个环境都有不同的配置文件。对我来说,配置 1 个属性比配置 10 个要好。
  • 好的,它在没有否定的情况下工作。例如。 autoStartup="{{email.monitor.autostartup}}" 。对于未来的读者,prop:autoStartup(有问题的第一个链接)不起作用,至少对于 Camel 2.21.0。

标签: java spring apache-camel


【解决方案1】:

按照上面的cmets...

Camel 属性值取反仅适用于 v3.x。 prop: prefix 似乎也不适用于 v2.x。

解决方法是使用不需要否定的属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 2012-08-17
    • 2012-11-02
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    相关资源
    最近更新 更多