【发布时间】: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 section 和this 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