0

@OutHeaders outHeaderBound を試しました-デバッグで調べたところ、null であることがわかりました。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()両方がnullを与えるのではなく、空のマップを与える必要があります。

これはバグですか?またはいくつかの機能を目的としています。

おっと、デバッグ セッションのスクリーンショット イメージを送信できませんでした。

4

1 に答える 1

0

この FAQ を参照してください - 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

于 2012-11-21T10:28:42.537 に答える