我在我的Web应用程序中使用spring JDBC入站通道适配器。如果我在群集环境中部署此应用程序,则两个或多个实例将拾取相同的作业并运行。 任何人都可以通过改变弹簧配置来帮助解决这个问题吗? 我附上了弹簧配置。
<int-jdbc:inbound-channel-adapter
query=" SELECT JOBID,
JOBKEY,
JOBPARAM
FROM BATCHJOB
WHERE JOBSTATUS = 'A' "
max-rows-per-poll="1" channel="inboundAdhocJobTable" data-source="dataSource"
row-mapper="adhocJobMapper"
update=" delete from BATCHJOB where JOBKEY in (:jobKey)"
>
<int:poller fixed-rate="1000" >
<int:advice-chain>
</int:advice-chain>
</int:poller>
</int-jdbc:inbound-channel-adapter>
答案 0 :(得分:2)
不幸的是,如果没有某种同步,这是不可能的。另外,将数据库用作某种消息队列并不是一个好主意(http://mikehadlow.blogspot.de/2012/04/database-as-queue-anti-pattern.html)。我会尝试采用不同的方法: