Apache Ignite - Distibuted Queue和Executors

时间:2017-01-31 00:39:28

标签: ignite

我打算使用Apache Ignite Distributed Queue。

我正在使用带有Spring启动应用程序的Ignite。因此,在启动时,我将在队列中添加20个名称。但是,由于群集中有3个服务器,因此相同的20个名称会被添加3次。但是,我想在队列中只添加一次。

Ignite ignite = Ignition.ignite();

IgniteQueue<String> queue = ignite.queue(
    "queueName", // Queue name.
    0,          // Queue capacity. 0 for unbounded queue.
    null         // Collection configuration.
);

分布式执行程序,将能够从队列中轮询并运行任务。这里,执行程序需要轮询,运行任务,然后将相同的名称添加到队列中。试图在这里实现循环赛。  尽管群集中有多个服务器,但只有一个执行程序应该在任何时间运行相同的任务。

对此有任何建议。

2 个答案:

答案 0 :(得分:1)

您可以启动点火群集单件服务https://apacheignite.readme.io/docs/cluster-singletons,它将数据填充到队列中。您还可以从协调器节点(群集中最旧的节点)添加数据 ignite.cluster()。forOldest()。node()。isLocal()

答案 1 :(得分:0)

我通过以下方式解决了启动时间重复缓存加载问题:

final IgniteAtomicLong cacheLoadCnt = ignite.atomicLong(cacheName + "Cnt", 0, true);
if (cacheLoadCnt.get() == 0) {
    loadCache();
    cacheLoadCnt.addAndGet(1);
}