是否可以在拆分后修改消息或从另一个交换中检索 header
Is that possible to modify message after split or retrieve header from another exchange
这是我的问题,我的分离器 class 如下:
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>
在其他块中,我有消息 object 由 MySplitterBean 复制,但我想以某种方式获得拆分后创建的 "test" header(处理夹板索引 0 时)。所以我的问题是它是否可能,以及如何让它发挥作用?
否则,如果拆分索引为零,则无法访问块,在这种情况下,无法从同一交易所检索 "test" header。它可以在选择块之外访问。
您可以在拆分操作之前使用虚拟对象设置一个 属性 值。
每个交换对象都可以通过引用调用访问该对象。
根据它可能的值,你需要一个额外的容器,比如一个列表来保证你可以访问同一个对象。
这是我的问题,我的分离器 class 如下:
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>
在其他块中,我有消息 object 由 MySplitterBean 复制,但我想以某种方式获得拆分后创建的 "test" header(处理夹板索引 0 时)。所以我的问题是它是否可能,以及如何让它发挥作用?
否则,如果拆分索引为零,则无法访问块,在这种情况下,无法从同一交易所检索 "test" header。它可以在选择块之外访问。
您可以在拆分操作之前使用虚拟对象设置一个 属性 值。 每个交换对象都可以通过引用调用访问该对象。 根据它可能的值,你需要一个额外的容器,比如一个列表来保证你可以访问同一个对象。