我们有一条带有每30秒调度程序的路由,该路由从cfg属性文件中读取一个值。如果属性键值为“ Y”,则我们需要执行某些过程。如果属性键值为“ N”,那么我们必须跳过该过程。 我们有一个管理Web应用程序,可通过tcp通信将价值发送到骆驼路线。
我的问题是,在从外部应用程序接收值时,我们必须更新骆驼路线中的cfg文件值,我们正在骆驼路线中接收值,但要更新被击中的cfg属性文件。
我创建了一个测试路由器供参考
<route id="test-route-timer">
<from uri="timer:foo?period=5s" />
<setProperty propertyName="callInterfaceProcedure">
<simple>{{call.interface.procedure}}</simple>
</setProperty>
<log message="${property.callInterfaceProcedure}"/>
<setProperty propertyName="callInterfaceProcedure">
<simple>N</simple>
</setProperty>
</route>
在这种情况下,请提出建议。
答案 0 :(得分:1)
假设cfg以key = value格式存在问题,则可以通过设置正文将数据写入文件。
<setBody>
<simple>callInterfaceProcedure={{call.interface.procedure}}</simple>
</setBody>
然后您可以使用
之类的文件组件写入文件<to uri="file:<path cfg>?filename=myprooperties.cfg&append=true
这将继续向属性添加新条目。为了避免此问题,您可以将整个文件内容作为映射加载到内存中,更新值并覆盖文件的内容。