【问题标题】:Why DB response ( resultSets) are being divided in two splits in Mule ESB为什么 DB 响应(结果集)在 Mule ESB 中分为两个部分
【发布时间】:2015-04-17 13:32:02
【问题描述】:

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

在记录器中可以看到,ResultSet1 结束标记是</custo(未完全完成为),它正在使用相同的密钥(XML_F5RYI-11YTR)进行扩展,并在那里完成mers>。

  1. 是否需要在 Mule DB 级别进行任何配置设置才能在同一级别传播所有 resultSet1?
  2. 实际上我的最终目标是提取 resultSet1,第二个记录器 MEL 正在提取,但它不是一个完整的 ResultSet。您能否建议一个动态的 MEL 来提取 ResultSet1 Complete payload。

否则建议我如何实现该场景。

请找到记录器中打印的消息

 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}

请找到配置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' 并且取得 Fetch Count = '10'。如果我启用了 Streaming,响应在 DB 之后传播,如下所示

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

添加Transformer 'Byte Array to string'后,响应如下

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

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

【问题讨论】:

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


    【解决方案1】:

    doc 是这样说的:

    获取大小 - 指示应从结果集中获取多少行。当 streaming 为 true 时需要该属性,默认值为 10。

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

    【讨论】:

    • 非常感谢您的快速回复。我已启用流式传输和获取。但是响应不是人类可读的。我试过'ByteArray to String'、'Dom to xml'。但无法读取 resultSet1 响应。您能否建议可能的选项。
    • :在我的情况下,响应是在 resultSet1 中正确传播(禁用流)(没有任何转换器),在 resultSet1 中有两个键值对(通过除 xml),但 resultSet1 中的两个键相同在记录器中看到。我也尝试过禁用“流媒体”并单独启用“获取计数”。但没有希望。
    【解决方案2】:

    您是否尝试过将 dom 添加到 xml,并且可以使用集合聚合器来加入拆分

    【讨论】:

    • 我已经通过编写自定义转换器解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-20
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多