У меня есть следующие настройки верблюжьих маршрутов:Camel Ионообменных свойства потеряли во время раскола
<route id="firstRoute">
<from uri="..." />
<!-- This processor puts a list of items as the out body -->
<process ref="collectItemsProcessor" />
<!-- Now all items should be processed one by one: -->
<split>
<simple>${body}</simple>
<to uri="direct:secondRoute" />
</split>
</route>
<route id="secondRoute">
<from uri="direct:secondRoute" />
<process ref="itemProcessor" />
</route>
В itemProcessor
Я хочу, чтобы подсчитать количество элементов, которые были успешно обработаны, помещая собственность в обмен:
exchange.setProperty("PROCESSED_ITEMS", exchange.getProperty("PROCESSED_ITEMS", Integer.class) + 1);
По какой-то причине при каждом вызове процессора свойство снова имеет значение null. Документация говорит:
Биржа также проводит мета-данные в течение всего срока его службы, хранящейся в свойства доступны с использованием различных GetProperty (String) методы.
https://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Exchange.html
При установке свойства первоначально в collectItemsProcessor
, это значение сохраняется. Я подозреваю, что обмен скопирован для каждого вызова на разделенный маршрут, но как я могу тогда действительно хранить «метаданные на протяжении всей жизни»?