0

我试过@OutHeaders outHeaderBound - 我在调试中检查过,我可以看到它是空的。如果我为 outHeaderBound 初始化一个新的哈希表/映射,标题键/值不会传播到下游队列。

例如代码片段:

  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()都必须给出一个空地图,而不是一个给空的地图。

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

糟糕,我无法提交调试会话的屏幕截图。

4

1 回答 1

0

请参阅此常见问题解答 - http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html

并查看 Exchange 上 getOut() 方法的 javadoc,然后您会看到如果 getOut 为空,它将延迟创建空消息。因此一个是空的,另一个是空映射,因为后者是到期的,getOut 创建了一个空消息。

http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Exchange.html

于 2012-11-21T10:28:42.537 回答