我喜欢将我的数据库列deltaprocessstatus更新为'我'从数据库中获取数据后。
以下是我的代码
<spring:beans>
<context:property-placeholder location="classpath:mule-app.properties"/>
</spring:beans>
<jdbc-ee:mssql-data-source name="MS_SQL_Data_Source" user="Ssssss" password="ffff" url="jdbc:sqlserver://localhost" transactionIsolation="UNSPECIFIED" doc:name="MS SQL Data Source"/>
<jdbc-ee:connector name="ProSFDB" dataSource-ref="MS_SQL_Data_Source" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database" transactionPerMessage="false">
<jdbc-ee:query key="SelectAllUser" value="SELECT top 100 * from master_user_Queue"/>
<jdbc-ee:query key="SelectAllUser.ack" value="update master_user_Queue set DeltaProcessStatus = 'I' where MasterUserID = 1"/>
<jdbc-ee:query key="SelectbatchWiseInfo" value="Select top 100 * from master_user_Queue where MasterUserID between #[payload['min']] and #[payload['max']]"/>
</jdbc-ee:connector>
<amqp:connector name="AMQP_Connector" validateConnections="true" host="${amqp.host}" port="${amqp.port}" virtualHost="${amqp.virtualhost}" username="${amqp.username}" password="${amqp.password}" doc:name="AMQP Connector"/>
<spring:beans>
<spring:bean id="objectStore" name="Bean" class="org.mule.util.store.SimpleMemoryObjectStore"/>
</spring:beans>
<data-mapper:config name="Map_To_Map" transformationGraphPath="map_to_map.grf" doc:name="Map_To_Map"/>
<flow name="asi_1_user_deactivationFlow1" doc:name="asi_1_user_deactivationFlow1" processingStrategy="synchronous">
<jdbc-ee:inbound-endpoint exchange-pattern="one-way" queryTimeout="-1" pollingFrequency="6000" doc:name="Database" connector-ref="ProSFDB" queryKey="SelectAllUser" tracking:enable-default-events="true">
<jdbc-ee:transaction action="ALWAYS_BEGIN"/>
</jdbc-ee:inbound-endpoint>
</flow>
查询键&#34; SelectAllUser&#34;工作正常但查询键&#34; SelectAllUser.ack&#34; &#34; SelectAllUser&#34;&#34; SelectAllUser&#34;叫做。我不知道自己哪里出错了。
提前致谢。
答案 0 :(得分:1)
SelectAllUser
缺少一个使SelectAllUser.ack
有用的where子句。
确实,ack查询设置了DeltaProcessStatus = 'I'
,但是选择查询没有检查DeltaProcessStatus != 'I'
。因此,将一次又一次地选择相同的行。
此外,ack查询为带有MasterUserID = 1
的where子句而非select查询的事实非常可疑。更新的行与选定的行不匹配存在风险。
编辑:您遇到的另一个潜在问题是您在入站端点中启动事务,但由于流为空,因此没有任何事情可以结束此事务。你能尝试删除交易元素吗?只要流量是空的,它就没用了......