Java 8 和 Camel 2.19.x 在這里。我有以下駱駝路線:<route id="widgetProcessing"> <from uri="activemq:inputQueue"/> <to uri="{{widgetFetcher}}"/></route>和widgetFetcher處理器:@Component("widgetFetcher")public class WidgetFetcher { private WidgetDao widgetDao; public WidgetFetcher(WidgetDao widgetDao) { this.widgetDao = widgetDao; } public Widget getWidgetToProcess() { // get the next widget id from the database final Integer firstWidgetId = widgetDao.getFirstSubmittedWidgetId(); // Do lots of stuff with 'firstWidgetId' down here... }}我想在 之后<from>和之前創建一個交換屬性WidgetFetcher,并將該屬性的初始值設置為null; 然后有條件地將其值設置為WidgetFetcher. 此外,我希望這個重新分配的值在剩余的路線/處理中“堅持”。所以像:<route id="widgetProcessing"> <from uri="activemq:inputQueue"/> <setProperty propertyName="fizzId"> <constant>null</constant> </setProperty> <to uri="{{widgetFetcher}}"/> <log message="fizzId = ${property[fizzId]}" loggingLevel="ERROR"/></route>接著:public Widget getWidgetToProcess(@ExchangeProperty("fizzId") final String fizzId) { // get the next widget id from the database final Integer firstWidgetId = widgetDao.getFirstSubmittedWidgetId(); if (someMethodReturnsTrue()) { // Does this actually get saved outside the log.info("About to update fizzId...") fizzId = UUID.randomUUID().toString(); } // Do lots of stuff with 'firstWidgetId' down here...}然而,在運行時,本地分配fizzId = ...似乎并沒有被日志輸出讀?。篈bout to update fizzId...fizzId = null所以我認為我的處理器正在接收交換屬性的副本,fizzId但是重新分配它的值內聯實際上并沒有修改路由其余部分的實際值。關于如何做到這一點的任何想法?
添加回答
舉報
0/150
提交
取消