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 = ...似乎并没有被日志输出读取:About to update fizzId...fizzId = null所以我认为我的处理器正在接收交换属性的副本,fizzId但是重新分配它的值内联实际上并没有修改路由其余部分的实际值。关于如何做到这一点的任何想法?
添加回答
举报
0/150
提交
取消