我正在编写一个Aggregator Strategy类,其中我需要旧交换的头部,而新交换应该相互附加,以便将集合头部传递给下一个处理器类。
我尝试过putAll newHeader,但它没有附加到旧的exchange。
Map<String, Object> newHeader = newExchange.getIn().getHeaders();
oldExchange.getIn().getHeaders().putAll(newHeader);
return oldExchange;有什么建议吗?我如何才能做到这一点?
发布于 2018-02-26 17:47:28
public class AggregateHeaders implements AggregationStrategy {
@Override
public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
Map<String, Object> newHeaders = newExchange.getIn().getHeaders();
oldExchange.getIn().getHeaders().putAll(newHeaders);
return oldExchange;
}}你的代码应该像预期的那样工作...
写了一个小测试
@Test
public void test() {
DefaultCamelContext context = new DefaultCamelContext();
AggregateHeaders aggregator = new AggregateHeaders();
DefaultExchange newExchange = new DefaultExchange(context);
newExchange.getIn().setHeader("newName", "newValue");
DefaultExchange oldExchange = new DefaultExchange(context);
oldExchange.getIn().setHeader("oldName", "oldValue");
Exchange aggregated = aggregator.aggregate(oldExchange, newExchange);
assertThat(aggregated.getIn().getHeader("oldName"), is("oldValue"));
assertThat(aggregated.getIn().getHeader("newName"), is("newValue"));
}重要提示:如果要将邮件头从另一封邮件复制到此邮件,请使用getHeaders().putAll(other)复制邮件头,其中是其他邮件头。
https://stackoverflow.com/questions/48879208
复制相似问题