Camel blueprint обновляет значение свойства файла cfg

У нас есть маршрут с планировщиком каждые 30 секунд, который считывает значение из файла свойств cfg. Если значение ключа свойства равно «Y», то нам нужно выполнить определенные процедуры. Если значение ключа свойства равно 'N', мы должны пропустить процесс. У нас есть веб-приложение администратора для отправки значения на маршрут верблюда через связь 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>

Прошу совета в этом случае.


person salz    schedule 06.12.2018    source источник


Ответы (1)


Предполагая, что ваш cfg содержит проблему в формате ключ=значение, вы можете записать данные в файл, установив body.

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

а затем вы можете записать в файл, используя файловый компонент, например

<to uri="file:<path cfg>?filename=myprooperties.cfg&append=true

Это будет продолжать добавлять новые записи в свойства. Чтобы обойти эту проблему, вы можете загрузить все содержимое файла в память как карту, обновить значения и перезаписать содержимое файла.

person VarunKrish    schedule 07.12.2018
comment
Спасибо .. Я написал ту же логику в файле класса, но ваш ответ более элегантный, я приму это, ценю. - person salz; 08.12.2018