这是一个错误吗? @Outheader注释为null但是从交换它是一个Map

时间:2012-11-20 20:00:05

标签: apache-camel

我试过@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中的标题已被传播。

我希望@OutHeaderexchange.getOut.getHeader()都必须提供一个空地图,而不是一个给出null。

这是一个错误吗?或打算用于某些功能。

哎呀我无法提交调试会话的截图图片。

1 个答案:

答案 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