Camel Splitter:根据正文添加单个标题

Enn*_*eon 3 java apache-camel

我正在尝试拆分包含地图的邮件.根据我的教程,我必须使用自定义服务来实现实际的拆分

public class CustomService {
  public List split(Map map) {
    return map.values();
  }
}

//route ...
.split().method(CustomService.class, "split")
   .choice()
   //...
.end()
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切正常.但是,现在我想根据我想在split(Map)消息中设置的一些标题值来不同地路由消息.是否可以在拆分期间为每条消息添加不同的标头值?

Cla*_*sen 7

如果你返回你只能添加页眉中的断续方法List<Message>org.apache.camel.Message情况下,您可以调整头.

一些很长的线条(像假代码一样)

public class CustomService {
  public List split(Exchange exchange) {
    List list = new ArrayList();

    Map map = exchange.getIn().getBody(Map.class);
    for (Object value : map.values()) {
       // either copy or create a new DefaultMessage
       Message msg = new DefaultMessage();
       msg.setBody(value);
       // we want to copy the existing headers
       msg.setHeaders(exchange.getIn().getHeaders();
       // and then customize the headers
       msg.setHeader("foo", "bar");
       list.add(msg);
    }
    return list;
  }
}
Run Code Online (Sandbox Code Playgroud)