Java 8 如何获得可增加的索引?例如,在RouteBuilder中的循环()期间使用?

Java 8 如何获得可增加的索引?例如,在RouteBuilder中的循环()期间使用?,java-8,jbossfuse,camel-blueprint,Java 8,Jbossfuse,Camel Blueprint,问题:如何获取可递增索引(即在RouteBuilder中的循环()期间使用),以便对“direct:thingC”的迭代调用将“处理”后续元素(在arraylist中) 这里是configure()方法… 我们的目标是——相反——有这样的产出 解决方案:根据亚历山德罗的建议,如下所示 不要使用。从文档中: 循环允许对消息进行多次处理,每次迭代可能采用不同的方式。主要在测试期间有用。 默认模式 请注意,默认情况下,循环在整个循环中使用相同的交换。因此,上一次迭代的结果将用于下一次迭代 因为您希

问题:如何获取可递增索引(即在RouteBuilder中的循环()期间使用),以便对“direct:thingC”的迭代调用将“处理”后续元素(在arraylist中)

这里是configure()方法…

我们的目标是——相反——有这样的产出


解决方案:根据亚历山德罗的建议,如下所示


不要使用。从文档中:

循环允许对消息进行多次处理,每次迭代可能采用不同的方式。主要在测试期间有用。
默认模式
请注意,默认情况下,循环在整个循环中使用相同的交换。因此,上一次迭代的结果将用于下一次迭代

因为您希望处理可以“循环”的某个元素的单个元素,所以将其设置为body并使用

拆分器将
列表
拆分为单个部分,并在一个循环中处理所有内容


通常,如果字段是输入或输出数据,请避免使用
静态
字段。在这种情况下,最好将它们设置为主体,例如使用设置所需数据的
处理器
bean。

谢谢Alessandro。我改变了使用上面的“split()”函数。顺便问一下,如何从“simple{AA}”表达式中提取“AA”字符串?再次谢谢!
    private final org.apache.camel.Processor proc1 = new Processor1();
    private static final List<String> searchList = Arrays.asList("AA", "BB");
    private static final int z = searchList.size();
    private static int x = 0;    

    //***idea is to both elements using an index during the "loop".... Not working....

    @Override
    public void configure() throws Exception {

    from("timer://foo?fixedRate=true&period=" + 5000) //5 seconds...            
        .to("direct:thingB");

    from("direct:thingB")
        .log("---------------------- (from(\"direct:thingB\"))... ----------x=" + x)
        .loop(searchList.size()).to("direct:thingC");

    from("direct:thingC")
        .log("---------------------- (from(\"direct:thingC\"))... ----------searchList.get(" + x++ + ")=" + searchList.get(x));
    }
2017-09-01 16:13:19,142 | INFO  | 43 - timer://foo | route15                          | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | ---------------------- (from("direct:thingB"))... ----------x=0
2017-09-01 16:13:19,142 | INFO  | 43 - timer://foo | route16                          | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | ---------------------- (from("direct:thingC"))... ----------searchList.get(0)=BB
2017-09-01 16:13:19,143 | INFO  | 43 - timer://foo | route16                          | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | ---------------------- (from("direct:thingC"))... ----------searchList.get(0)=BB
2017-09-01 16:13:24,141 | INFO  | 43 - timer://foo | route15                          | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | ---------------------- (from("direct:thingB"))... ----------x=0
2017-09-01 16:13:24,141 | INFO  | 43 - timer://foo | route16                          | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | ---------------------- (from("direct:thingC"))... ----------searchList.get(0)=BB
2017-09-01 16:13:24,142 | INFO  | 43 - timer://foo | route16                          | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | ---------------------- (from("direct:thingC"))... ----------searchList.get(0)=BB
2017-09-01 16:13:19,142 | INFO  | 43 - timer://foo | route15                          | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | ---------------------- (from("direct:thingB"))... ----------x=0
2017-09-01 16:13:19,142 | INFO  | 43 - timer://foo | route16                          | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | ---------------------- (from("direct:thingC"))... ----------searchList.get(0)=AA
2017-09-01 16:13:19,143 | INFO  | 43 - timer://foo | route16                          | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | ---------------------- (from("direct:thingC"))... ----------searchList.get(1)=BB
2017-09-01 16:13:24,141 | INFO  | 43 - timer://foo | route15                          | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | ---------------------- (from("direct:thingB"))... ----------x=0
2017-09-01 16:13:24,141 | INFO  | 43 - timer://foo | route16                          | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | ---------------------- (from("direct:thingC"))... ----------searchList.get(0)=AA
2017-09-01 16:13:24,142 | INFO  | 43 - timer://foo | route16                          | 232 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | ---------------------- (from("direct:thingC"))... ----------searchList.get(1)=BB
private final String s = "AA,BB";

@Override
public void configure() throws Exception {

    from("timer://foo?fixedRate=true&period=" + 5000) //5 seconds... 
            .setBody(constant(s))            
            .to("direct:thingB")

    from("direct:thingB")
            .split().tokenize(",")
            .to("direct:thingC");       

    from("direct:thingC")
            .log("body=" + body());  //note: this value looks like simple{AA}
}
from("timer://foo?fixedRate=true&period=" + 5000) //5 seconds...            
    setBody(searchList)
    .to("direct:thingB");

from("direct:thingB")
    .split()
        .simple("${body}")
        .log("This is element: ${body} [Element number ${exchangeProperties.CamelSplitIndex} of ${exchangeProperties.CamelSplitSize} total elements]")
    .end()