我有一个路由Producer -〉Split -〉Processor,在处理器中,我试图找出当前正在处理的交换是否是最后一个被拆分的交换。
根据camel split docs,将三个属性放入每个已拆分的Camel交换中:CamelSplitIndex、CamelSplitSize和CamelSplitComplete。
当使用camel 3.0.0-RC 3时,我可以看到这些属性被填充并在处理器类中可用。但是当使用版本3.11.1或3.17.0时,我看不到这些值在交换中被填充。
是我漏掉了什么还是 Camel 虫。
主要类别:
SpringApplication.run,参数);
路线:
from("timer://simpleSplitTimer?period=1000000").process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
Trade trade1 = new Trade(1L, 15.4, 200, "WF");
Trade trade2 = new Trade(2L, 75.1, 100, "GS");
Trade trade3 = new Trade(3L, 20.0, 15, "JP");
List<Trade> tradeList = new ArrayList<>();
tradeList.add(trade1);
tradeList.add(trade2);
tradeList.add(trade3);
exchange.getIn().setHeader("GUITrade", "Y");
exchange.getIn().setBody(tradeList);
}
})
.to("direct:toSplit");
from("direct:toSplit").split(body()).to("direct:afterSplit1");
from("direct:afterSplit1").process(postSplitProcessor);
相关性:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.11.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring-boot-starter</artifactId>
<version>3.0.0-RC3</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jms</artifactId>
<version>3.0.0-RC3</version>
</dependency>
</dependencies>
1条答案
按热度按时间dl5txlt91#
由于您尚未发布用于访问
Exchange
属性的代码片段,我猜您正在使用Exchange#getProperties
来访问不同的属性,这些属性已在 Apache Camel 的3.9.0版本中进行了优化/重构:Exchange上的属性已经过优化,分为两部分:内部状态与用户属性。方法getProperties()现在只返回用户属性。要包括内部属性,请使用getAllProperties()。其他API(如getProperty(String))的工作方式与以前相同,能够查找属性,而不管其是内部属性还是自定义属性。
您应该能够访问与拆分相关的属性:
Exchange#getAllProperties
:Exchange#getProperty(ExchangePropertyKey)
: