【发布时间】:2015-01-14 15:48:58
【问题描述】:
我们有一个 Spring Integration 应用程序,它像这样轮询 mongodb:inbound-channel-adapter:
<int-mongodb:inbound-channel-adapter channel="n2s.mongoResults"
collection-name="entities"
query="{_id: {$regex: 'mpl/objectives'}})">
<!-- Run every 15 minutes -->
<int:poller fixed-rate="900000"/>
</int-mongodb:inbound-channel-adapter>
一切正常。但是,此应用程序部署到集群中,因此多个服务器运行同一个轮询器。我们希望协调这些服务器,以便只有一个服务器运行管道。
当然,服务器不知道彼此,所以我们可能需要通过数据库中的锁定机制来协调它们。关于如何实现这一点的任何建议?
注意事项:
在此工作流程中,我们可以同时访问 MongoDB 数据库和 Oracle 数据库。从工作流的角度来看,锁定Oracle数据库更有意义。
如果所有服务器都执行轮询步骤,然后一个服务器锁定以实际处理记录,那很好,如果这更容易实现的话。
【问题讨论】:
标签: java spring oracle mongodb spring-integration