Camel:如何将Integer标头的值增加设定量

时间:2016-01-14 11:37:50

标签: apache-camel

到目前为止,这是我的代码,我希望offset增加50标题的值:

.process(new Processor() {
     @Override
     public void process(Exchange ex){  
         ex.getIn().setHeader("offset", Integer.parseInt(ex.getIn().getHeader("offset").toString())); }
  })

有人知道一个简单的解决方案吗?

3 个答案:

答案 0 :(得分:3)

我没有看到你在代码中用50增加整数标题的位置[注意:之后编辑了问题]。您似乎只是将String解析为整数。您可以通过利用类型转换

来简化它
Message in = ex.getIn();
in.setHeader("offset", in.getHeader("offset", Integer.class));

如果您希望按50增加偏移标头,可以在OGNL的帮助下在路线中执行此操作(无需使用处理器,像建议的其他答案一样),并首先将标题转换为整数:

from("direct:hello")
    .setHeader("offset", header("offset").convertTo(Integer.class))
    .setHeader("offset").ognl("request.headers.offset + 50");

答案 1 :(得分:2)

我正在使用这样的处理器:

// less than $max
for($i = 0; $i < $max; $i++){

示例:

// less than OR equal to $max
for($i = 0; $i <= $max; $i++){

有兴趣看到其他简单的解决方案。

答案 2 :(得分:1)

但是,对于更复杂的用例,通常建议您选择一种更具表达能力的强大语言,例如SpEL,Groovy,OGNL和others

如果使用Spring,则可能已经在使用SpEL。

我使用SpEL重写了表达式:

from("direct:hello")
  .setHeader("offset").spel("#{request.headers['offset'] != null ? request.headers['offset'] + 1 : 1}")