我试过@OutHeaders outHeaderBound - 我在调试中检查过,我发现它是null。如果我为outHeaderBound初始化一个新的哈希表/映射,则header / value不会传播到下游队列。
例如代码段:
public void populateCorrelationId(@Body String body, @Headers Map<String, Object> headers,
@OutHeaders Map<String, Object> outHeaderBound, Exchange exchange) {
Map<String, Object> outHeader = exchange.getOut().getHeaders();
String msgId = (String) headers.get(msgIdKey);
String currentCorrId = (String) headers.get(correlationIdKey);
我尝试了outHeader = exchange.getOut().getHeaders()
,我得到了一张空地图,并且我放在outHeader中的标题已被传播。
我希望@OutHeader
和exchange.getOut.getHeader()
都必须提供一个空地图,而不是一个给出null。
这是一个错误吗?或打算用于某些功能。
哎呀我无法提交调试会话的截图图片。
答案 0 :(得分:0)
请参阅此常见问题解答 - http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html
然后在Exchange上看到getOut()方法的javadoc,那么你会看到getOut将延迟创建空消息(如果它为null)。因此,一个是null,另一个是空映射,因为后者到期,getOut创建了一个空消息。
http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Exchange.html