MULE:Xquery transformer性能问题

MULE:Xquery transformer性能问题,xquery,mule,Xquery,Mule,我有一个接收XML请求的流。 然后调用jdbc出站端点,对Oracle数据库执行查询。 然后使用xquery转换器将查询结果转换为XML并发送回。 来自数据库的sql最多返回50000行,但是xquery transformer创建的XML文件每行有60行,这导致了一个非常大的XML文件(15-100MB)。 Mule花了很长时间“映射/创建”XML文件,我想知道我是否可以以某种方式加快这个过程,或者我是否必须重新考虑我的方法 问候, MagnusZorba提供JDBC连接器和流媒体功能: 它可

我有一个接收XML请求的流。 然后调用jdbc出站端点,对Oracle数据库执行查询。 然后使用xquery转换器将查询结果转换为XML并发送回。 来自数据库的sql最多返回50000行,但是xquery transformer创建的XML文件每行有60行,这导致了一个非常大的XML文件(15-100MB)。 Mule花了很长时间“映射/创建”XML文件,我想知道我是否可以以某种方式加快这个过程,或者我是否必须重新考虑我的方法

问候,


Magnus

Zorba提供JDBC连接器和流媒体功能: 它可能正是您想要的。

直接从Mule's:

使用DelayedResult的有效转换
Mule包含一种称为DelayedResult的特殊XML输出格式。这种格式通过延迟任何XML序列化直到输出流可用,从而允许非常高效的XML转换。
例如,下面是一个XSLT转换器,设置为使用DelayedResult:
如果此转换的结果被发送到HTTP客户机,HTTP客户机将向Mule请求OutputHandler并将OutputStream传递给它。只有这样,Mule才能执行转换,将输出直接写入OutputStream。
如果没有使用DelayedResult,XML结果将首先写入内存缓冲区,然后再写入OutputStream。这将导致XML处理速度变慢。
因此,使用XSLT转换器而不是XQuery转换器更有意义

Efficient Transformations with DelayedResult

Mule contains a special XML output format called DelayedResult. This format allows very efficient XML transformations by delaying any XML serialization until an OutputStream is available.

For example, here is an XSLT transformer set up to use DelayedResult:

<mxml:xslt-transformer name="transform-in" 
                       xsl-file="xslt/transform.xslt"
                       returnClass="org.mule.module.xml.transformer.DelayedResult"/>

If the result of this transformation were being sent to an HTTP client, the HTTP client would ask Mule for an OutputHandler and pass in the OutputStream to it. Only then would Mule perform the transformation, writing the output directly to the OutputStream.

If DelayedResult were not used, the XML result would first be written to an in-memory buffer before being written to the OutputStream. This will cause your XML processing to be slower.