16.18. PAYLOAD モードのストリーミングサポート
camel-cxf コンポーネントは、PAYLOAD モードを使用する場合に受信メッセージのストリーミングをサポートするようになりました。以前は、受信メッセージは完全に DOM 解析されていました。メッセージが大きい場合、これには時間がかかり、大量のメモリーを使用します。受信メッセージは、ルーティング中に javax.xml.transform.Source として残り、ペイロードを何も変更しないと、ターゲット宛先に直接ストリーミングできます。一般的な単純なプロキシーのユースケース(例:from ("cxf:…").to ("cxf:…")では、パフォーマンスが大幅に向上し、メモリー要件が大幅に低下する可能性があります。
ただし、ストリーミングが適切でない、または望ましくない場合もあります。ストリーミングの性質上、無効な受信 XML は処理チェーンで後でキャッチされないことがあります。また、特定のアクションでは、メッセージを DOM で解析する必要があります(WS-Security やメッセージトレースなど)。この場合、ストリーミングの利点は制限されます。この時点で、ストリーミングを制御する方法は 2 つあります。
- endpoint プロパティー:"allowStreaming=false" をエンドポイントプロパティーとして追加し、ストリーミングをオン/オフにすることができます。
- Component プロパティー:CxfComponent オブジェクトには、そのコンポーネントから作成されたエンドポイントのデフォルトを設定できる allowStreaming プロパティーもあります。
グローバルシステムプロパティー:org.apache.camel.component.cxf.streaming のシステムプロパティーを false に追加してオフにすることができます。これにより、グローバルのデフォルトが設定されますが、上記の endpoint プロパティーを設定すると、そのエンドポイントに対してこの値が上書きされます。