为什么DB响应(resultSets)在Mule ESB中被分成两个分区

时间:2015-02-16 22:37:15

标签: mule mule-studio mule-el mule-component

我正在查询DB以通过Mule获得响应。响应正在填充,但不确定为什么它在resultSet1中被分割(如果它更大)。

可以在logger中看到,ResultSet1结束标记是</custo(不完整地完成),它使用相同的密钥(XML_F5RYI-11YTR)进行扩展,并在那里完成mers>

  1. 我是否需要在Mule DB级别进行任何配置设置以在同一级别传播所有resultSet1?
  2. 实际上我的最终目的是提取resultSet1,第二个记录器MEL正在提取,但它不是一个完整的ResultSet。请你动态建议一个MEL来提取ResultSet1完整的有效载荷。
  3. 否则建议我如何实现该方案。

    请查看记录器中打印的信息

     DB Actual response:{updateCount1=4,resultSet1=[{XML_F5RYI-11YTR=<Customers><Customer1>John<Customer1>( removed multiple customers tags)<Customer6>Ganesh<Customer6></Custo},{XML_F5RYI-11YTR=mers>}],resultSet2[{SequenceNumber=94}],updateCount2=1, updateCount3=4}
    

    请找到config xml

    <poll doc:name="Poll">
            <fixed-frequency-scheduler frequency="10" timeUnit="SECONDS"/>
            <db:stored-procedure config-ref="SCC_DB" doc:name="Database">
                <db:parameterized-query><![CDATA[{call [Database Query here](1)}]]></db:parameterized-query>
            </db:stored-procedure>
        </poll>
        <logger message="DB Actual response:#[payload]" level="INFO" doc:name="Logger"/>
        <logger message="Extracted ResultSet1 Response:************#[payload.resultSet1[0]['XML_F5RYI-11YTR']]********" level="INFO" doc:name="Logger"/>
    

    骡子版本:3.5.1

    请说明我哪里错了。感谢您的帮助。

    编辑:

    我启用了Streaming ='true'和Made Fetch Count ='10'。如果我启用了流式传输,响应会在DB之后传播,如下所示

    ****  DB response:org.mule.module.db.internal.result.statement.CloseableMap@558351f4*****
    

    将Transformer'Bete Array添加到字符串'后,响应如下

      **After Transformer:{updateCount1=0, resultSet1=org.mule.module.db.internal.result.resultset.ResultSetIterator@64df82c7, resultSet2=org.mule.module.db.internal.result.resultset.ResultSetIterator@e030a8e}**********
    

    我已尝试在设置Payload中分离#[payload.resultSet1],即使我无法提供转换器以查看确切的响应。你能否建议变压器看看resultSet1的响应。

2 个答案:

答案 0 :(得分:0)

doc说:

  

获取尺寸 -   指示应从resultSet中提取的行数。当流为真时,此属性是必需的,默认值为10.

尝试将其设置为您期望的最大尺寸。

答案 1 :(得分:0)

您是否尝试过向dml添加dom,并且可以使用集合聚合器来加入分割