阻止ESB序列返回缓存值

时间:2017-12-01 07:50:28

标签: wso2 wso2esb esb wso2carbon

我有一个在数据库中执行插入的序列,并使用插入行的唯一ID进行响应。但是我注意到,当此代理接收到许多请求时,在有效负载中发回的某些响应具有重复值。

这是我的序列码的一部分

<dblookup>
   <connection>
      <pool>
         <dsName>DSNAME</dsName>
      </pool>
   </connection>
   <statement>
      <sql>select SEQUENCE1.nextval as uniqueId from dual</sql>
            <result name="uniqueId" column="uniqueId"/>
   </statement>
</dblookup>
<dbreport>
   <connection>
   <pool>
      <dsName>DSNAME</dsName>
   </pool>
   </connection>
   <statement>
      <sql>Insert Into RECORDS_TABLE (ID_ROW, DATA) Values(?,?)</sql>
   <parameter expression="get-property('uniqueId')" type="NUMERIC"/>
   <parameter expression="//sentData" type="VARCHAR"/>
   </statement>
</dbreport>
   <payloadFactory media-type="xml">
   <format>
      <hh:myResponse xmlns:hh="http://samplens.com/sample/">
      <hh:uniqueId>$1</hh:uniqueId>
      </hh:myResponse>
   </format>
<args>
 <arg xmlns:hh="http://samplens.com/sample/" evaluator="xml" expression="get-property('uniqueId')"/>  </args>

</payloadFactory>

这适用于少量请求,但对于大量请求,ESB会返回旧uniqueId的响应,是否有任何不同的方法可以防止这种情况,或者是否有人知道解决此问题的最佳方法。任何帮助都将受到高度赞赏。

0 个答案:

没有答案