首页 > 解决方案 > WSO2 EI - 插入数据库限制 - DBReport 调解器

问题描述

我有一个 api,它将使用 DBReport 调解器解析并插入 20000+ 行到一个 oracle 数据库表中。我的api代码:

<api xmlns="http://ws.apache.org/ns/synapse" name="AllMembers" context="/AllMembers">
       <resource methods="GET">
          <inSequence>
             <send>
                <endpoint>
                   <http uri-template="https://xxxxxxxxxxxxxxxxxxxxxx"/>
                   <property name="Authorization" value="Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" scope="transport"/>
                </endpoint>
             </send>
          </inSequence>
          <outSequence>
             <dbreport useTransaction="true">
                <connection>
                   <pool>
                      <dsName>xxxxxxxxx</dsName>
                   </pool>
                </connection>
                <statement>
                   <sql>DELETE FROM MEMBERS_API_TBL </sql>
                </statement>
             </dbreport>
             <foreach id="foreach_1" expression="//jsonObject">
                <sequence>
                   <dbreport useTransaction="true">
                      <connection>
                         <pool>
                            <dsName>xxxxxxxxx</dsName>
                         </pool>
                      </connection>
                      <statement>
                         <sql>INSERT INTO MEMBERS_API_TBL VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)</sql>
                         <parameter expression="//status" type="VARCHAR"/>
                         <parameter expression="//xxxx" type="VARCHAR"/>
                         <parameter expression="//account_id" type="NUMERIC"/>
                         <parameter expression="//fields//xxxx" type="VARCHAR"/>
                         <parameter expression="//fields//xxxx" type="VARCHAR"/>
                         <parameter expression="//fields//xxxxx" type="VARCHAR"/>
                         <parameter expression="//fields//xxxxxx" type="VARCHAR"/>
                         <parameter expression="//fields//xxxxx" type="VARCHAR"/>
                         <parameter expression="//fields//xxxxx" type="VARCHAR"/>
                         <parameter expression="//fields//xxxxx" type="VARCHAR"/>
                         <parameter expression="//fields//xxxxx" type="VARCHAR"/>
                         <parameter expression="//member_id" type="NUMERIC"/>
                         <parameter expression="//email" type="VARCHAR"/>
                         <parameter expression="get-property('SYSTEM_DATE')" type="VARCHAR"/>
                      </statement>
                   </dbreport>
                </sequence>
             </foreach>
             <respond/>
          </outSequence>
       </resource>
    </api>        

当我执行时,我得到 ORA-01000: maximum open cursors exceeded,我的默认 db OPEN 游标限制为 1000,但我必须插入 20K+ 行,有没有一种方法可以在 WSO2 EI 中执行此操作而无需修改数据库打开游标限制。

有什么建议么?

标签: wso2wso2esbwso2carbonwso2dss

解决方案


当我将其设置为“False”时,它工作正常。


推荐阅读