Ignite Queue的删除是否可以在多线程中正常工作?

时间:2017-08-21 13:43:34

标签: ignite

我们正尝试使用多线程并行地从IgniteQueue中删除数据。

下面是在各个线程中调用的代码。

def dequeue(array: Array[Row]): Unit = {
  val icfg= new IgniteConfiguration
  icfg.setClientMode(true)
  val ignite = Ignition.getOrStart(icfg)
  val igniteQueue:IgniteQueue[Row] = ignite.queue("Ignite", 0, new CollectionConfiguration)
  igniteQueue.removeAll(array)
}

出征不正常。

我是否需要更改配置?

测试:

队列数:7588

我们实施了循环来代替多线程,以便顺序测试removeAll

dataFrame.take(3).foreach(row => {
    var array = /*array forming logic*/
    dequeue(array)
})

迭代1:166

发布删除所有队列大小:7422

迭代2:192

发布删除所有队列大小:7230

迭代2:185

发布删除所有队列大小:7045

现在处于多线程

dataFrame.take(3).foreach(row => {
    var array = /*array forming logic*/
    val dequeueThread: ThreadDequeue = new ThreadDequeue(array)
    pool.submit(dequeueThread)
})

ThreadDequeue类将具有dequeue方法。

主题1:166

发布删除所有队列大小:7416

线程2:192

发布删除所有队列大小:7414

主题2:185

发布删除所有队列大小:7259

顺序执行时,出队正常。但在多线程中,出列的计数不匹配。

先谢谢。

0 个答案:

没有答案