首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache骆驼拆分器没有填充交换中的属性。

Apache骆驼拆分器没有填充交换中的属性。
EN

Stack Overflow用户
提问于 2022-06-27 14:27:15
回答 1查看 107关注 0票数 0

我有一个路由生成器->拆分的->处理器,在处理器中,我试图找出当前正在处理的交换是否是最后一个被拆分的。

根据骆驼分裂文档的说法,每个被分割的骆驼交易所都有三个属性。CamelSplitIndex,CamelSplitSize和CamelSplitComplete。

当使用camel 3.0.0-RC3时,我可以看到这些属性在处理器类中被填充和可用。但是,当使用3.11.1或3.17.0版本时,我没有看到交换中填充了这些值。

我是不是漏掉了什么还是这是骆驼虫。

主要班:

SpringApplication.run(CamelTestMain.class,args);

路线:

代码语言:javascript
复制
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);

依赖关系:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72773758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档