3

ばかげた質問かもしれませんが、Camel で処理したい巨大なメッセージがあるとします。ルートのステップ数はメモリ使用量にどのように影響しますか? camel はルートのすべてのステップでメッセージ ペイロードをディープ コピーしますか?

ルートを下げたままにして、大きなメッセージの場合は「巨大な」Bean で処理する方がよいでしょうか?

これはさまざまなことを行うルートの例ですが、ペイロードは変更しません。

from("foo:bar")
  .log(..)
  .setProperty(..)
  .setHeader(..)
  .log(..)
  .choice()
    .when(simple(... ) ) 
      .log(..)
      .to(..)
    .when(simple(..))
      .log(..)
      .to(..)
  .end()
4

2 に答える 2

2

私の理解では、このような単純なパイプライン ルートの場合、本体を含む Exchange が作成され、ルートの各ステップに渡されます。ただし、他の EIP では Exchange がコピーされます (マルチキャスト、盗聴など)...

同様に、ルートに沿って、外部リソースとインターフェースするステップがあり、ボディのあらゆるタイプのコピー/クローン/変換/シリアライゼーションが不必要に発生する可能性がある場合は、クレーム チェック パターンのようなものを使用してこれを減らすことができます。

于 2012-10-18T19:42:02.587 に答える
2

ラクダ交換は、手順でメッセージ オブジェクトがコピーまたは再作成されるルートを通じて同じです。ただし、本体は参照されているだけです。したがって、通常、問題は発生しないはずです。

ただし、これは各 camel プロセッサによって個別に処理されます。そのため、一部のプロセッサは本体をコピーする場合があります。通常、これはプロセッサが実際にボディで動作する場合です。したがって、この場合は避けられません。

于 2012-10-20T08:03:03.383 に答える