Spring integration 设计:Spring集成:集群环境中的Jdbc入站适配器

Spring integration 设计:Spring集成:集群环境中的Jdbc入站适配器,spring-integration,Spring Integration,我们在Oracle Weblogic 10.3.6服务器中有一个具有2个节点的集群环境,它是循环的 我有一个服务,它从外部系统获取消息并将它们放入数据库(Oracle DB) 我正在使用jdbc入站适配器转换这些消息并将其传递给通道。 并且只处理一次消息。我计划在DB表中有一列(NODE_NAME)。当从外部系统获取消息的第一个服务也使用节点名称(weblogic.NAME)更新列时。在jdbc入站适配器的SELECT查询中,如果我指定节点名称,那么消息将只处理一次 i、 e.如果(节点1的)服

我们在Oracle Weblogic 10.3.6服务器中有一个具有2个节点的集群环境,它是循环的

我有一个服务,它从外部系统获取消息并将它们放入数据库(Oracle DB)

我正在使用jdbc入站适配器转换这些消息并将其传递给通道。 并且只处理一次消息。我计划在DB表中有一列(NODE_NAME)。当从外部系统获取消息的第一个服务也使用节点名称(weblogic.NAME)更新列时。在jdbc入站适配器的SELECT查询中,如果我指定节点名称,那么消息将只处理一次

i、 e.如果(节点1的)服务1将消息保存在DB中,则(节点1的)入站适配器1将消息传递到通道

Example: 
<si-jdbc:inbound-channel-adapter id="jdbcInboundAdapter"
    channel="queueChannel" data-source="myDataSource"
    auto-startup="true"
    query="SELECT * FROM STAGE_TABLE WHERE STATUS='WAITING' and NODE_NAME = '${weblogic.Name}'"
    update="UPDATE STAGE_TABLE SET STATUS='IN_PROGRESS' WHERE ID IN (:Id)"
    max-rows-per-poll="100" row-mapper="rowMapper"
    update-per-row="true">

    <si:poller fixed-rate="5000">
        <si:advice-chain> 
            <ref bean="txAdvice"/> 
            <ref bean="inboundAdapterConfiguration"/> 
        </si:advice-chain>
    </si:poller>
</si-jdbc:inbound-channel-adapter>

如果有人能给我指出正确的方向,那就太好了。

事实上,更新跳过锁定的
正是Oracle的功能-


如果您对此有疑问,这里有一个来自Spring Integration的代码:

实际上,
FOR UPDATE SKIP LOCKED
正是Oracle的功能-。然后我可以继续使用这个Select SQL。我看到了这篇文章,但我不确定用户是否面临任何挑战,因为他的回答不清楚:如果您对此有疑问,这里有一个来自Spring Integration的代码:,我们使用相同的语句
SELECT * FROM TABLE WHERE STATUS='WAITING' FOR UPDATE SKIP LOCKED