是否可以在拆分后修改消息或从另一个交换中检索 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。它可以在选择块之外访问。

您可以在拆分操作之前使用虚拟对象设置一个 属性 值。 每个交换对象都可以通过引用调用访问该对象。 根据它可能的值,你需要一个额外的容器,比如一个列表来保证你可以访问同一个对象。