目前我们正在使用已弃用的jdbc连接器及其相应的jdbc入站端点来轮询数据库中的数据。
我们正在使用.ack(确认(ACK)语句功能)来防止处理重复记录。
但是我似乎没有使用新的数据库连接器找到相同的功能。我们正在使用Mule社区版,因此我们无法使用批处理组件。
是否有可能使用数据库连接器(与轮询组件结合使用)具有相同的功能。或者我们是否必须手动确认我们的记录?
<jdbc:connector name="dbPollingConnector" dataSource-ref="dataSource" queryTimeout="1000" pollingFrequency="1000">
<receiver-threading-profile maxThreadsActive="1" />
<reconnect-forever frequency="60000"></reconnect-forever>
<jdbc:query key="newDataGrouped" value="select * from table where processed = 0"></jdbc:query>
<jdbc:query key="newDataGrouped.ack" value="update table set processed = current_timestamp"></jdbc:query>
</jdbc:connector>
<flow name="flowName">
<jdbc:inbound-endpoint name="groupedInboundComponent" responseTimeout="1000" queryTimeout="100"
pollingFrequency="1000" connector-ref="dbPollingConnector" queryKey="newDataGrouped" exchange-pattern="request-response">
</jdbc:inbound-endpoint>
<!--... rest of the flow ... -->
</flow>
答案 0 :(得分:0)
您可以使用Polling for Updates using Watermarks
它的工作方式与.ack略有相似,但不修改数据库中的物理数据。我认为在当前查询中只需要稍作修改,例如:select * from table where id > #[flowVars['lastModifiedID']]