骆驼蓝图更新cfg文件属性值

时间:2018-12-06 08:09:49

标签: apache-camel blueprint-osgi

我们有一条带有每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>

在这种情况下,请提出建议。

1 个答案:

答案 0 :(得分:1)

假设cfg以key = value格式存在问题,则可以通过设置正文将数据写入文件。

<setBody>
  <simple>callInterfaceProcedure={{call.interface.procedure}}</simple>
</setBody>

然后您可以使用

之类的文件组件写入文件
<to uri="file:<path cfg>?filename=myprooperties.cfg&append=true

这将继续向属性添加新条目。为了避免此问题,您可以将整个文件内容作为映射加载到内存中,更新值并覆盖文件的内容。