我有一个在数据库中执行插入的序列,并使用插入行的唯一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
的响应,是否有任何不同的方法可以防止这种情况,或者是否有人知道解决此问题的最佳方法。任何帮助都将受到高度赞赏。