这是我的问题我有以下分类器:
public class MySplitterBean {
public List<Message> splitMessage(Message m) {
List<Message> answer = new ArrayList<Message>();
for (int i=0; i<3; i++) {
DefaultMessage message = new DefaultMessage();
message.setHeaders(m.getHeaders());
message.setBody(m.getBody());
answer.add(message);
}
return answer;
}
}
在途中:
<split strategyRef="someClassStrategy">
<method ref="mySplitterBean" method="splitMessage" />
<choice>
<when>
<simple>${property.CamelSplitIndex} == 0</simple>
<!-- 1. calculate something and store result in header, for example set header test=12345 -->
</when>
<otherwise>
<!-- 2. now how can I retrieve "test" header from above exchange (from splitIndex 0) -->
</otherwise>
</choice>
</split>
在另外的块中我有MySplitterBean复制的消息对象,但是我想以某种方式得到分割后创建的“test”头(处理夹板索引0时)。所以我的问题是它是否可行,以及如何使其发挥作用?
答案 0 :(得分:1)
您可以在拆分操作之前使用虚拟对象设置属性值。 每个交换对象都可以通过引用调用来访问该对象。 根据它的值,您需要一个额外的容器,如列表,以保证您可以访问同一个对象。
答案 1 :(得分:0)
否则,如果拆分索引为零,则无法访问块,&#34; test&#34;在这种情况下,无法从同一个交换机检索标头。它可以在选择区外访问。