29.19. PAYLOAD 模式流支持
camel-cxf 组件现在支持在使用 PAYLOAD 模式时处理传入的信息。在以前的版本中,传入的信息会被完全解析 DOM。对于大型消息,这非常耗时,使用大量内存。在路由时,传入的消息可以保留为 javax.xml.transform.Source,如果不修改有效负载,则可以直接流传输到目标目的地。对于常见的"简单代理"用例(例如: from ("cxf:…").to ("cxf:…")),这可以提供非常显著的性能增加,并显著降低内存要求。
然而,在有些情况下流可能不合适或需要的。由于流性质,在稍后处理链中可能无法发现无效的传入的 XML。此外,某些操作可能要求消息是 DOM 解析的任何方式(如 WS-Security 或消息追踪等),在这种情况下,流的优势是有限的。此时,可以通过两种方式控制流:
- endpoint 属性:您可以添加 "allowStreaming=false" 作为端点属性,来打开/关闭流。
- 组件属性:CxfComponent 对象也具有 allowStreaming 属性,可以为从该组件创建的端点设置默认值。
全局系统属性:您可以将"org.apache.camel.component.cxf.streaming"的系统属性添加到 "false" 以将其关闭。这会设置全局默认值,但设置上面的 endpoint 属性将覆盖该端点的这个值。