我有一个路由生成器->拆分的->处理器,在处理器中,我试图找出当前正在处理的交换是否是最后一个被拆分的。
根据骆驼分裂文档的说法,每个被分割的骆驼交易所都有三个属性。CamelSplitIndex,CamelSplitSize和CamelSplitComplete。
当使用camel 3.0.0-RC3时,我可以看到这些属性在处理器类中被填充和可用。但是,当使用3.11.1或3.17.0版本时,我没有看到交换中填充了这些值。
我是不是漏掉了什么还是这是骆驼虫。
主要班:
SpringApplication.run(CamelTestMain.class,args);
路线:
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>发布于 2022-06-28 11:54:47
由于您还没有发布访问Exchange属性的代码片段,我想您将使用Exchange#getProperties来访问不同的的属性
Exchange上的属性已被优化为两种:内部状态与用户属性。方法getProperties()现在只返回用户属性。要同时包含内部属性,请使用getAllProperties()。其他API(如getProperty(String) )的工作方式与以前一样,无论属性是内部的还是自定义的,都可以查找它。
您应该能够访问与拆分相关的属性:
Exchange#getAllProperties:
exchange.getAllProperties().get("CamelSplitIndex");Exchange#getProperty(ExchangePropertyKey):
exchange.getProperty(ExchangePropertyKey.SPLIT_INDEX);https://stackoverflow.com/questions/72773758
复制相似问题