Hazelcast中的优先级阻止队列

时间:2017-10-19 05:50:02

标签: java hazelcast

我正在评估Hazelcast IMDG,以便用它来减少一些数据库瓶颈。我们的应用程序在许多节点上运行,这些节点从位于中间的数据库并行处理数据。

我们使用信号量表来分发工作,这正是我们考虑用Hazelcast阻塞队列取代的。

然而,一些要处理的消息比其他消息具有更高的优先级,这让我开始怀疑,因为Hazelcast似乎没有等效的java.util.concurrent.PriorityBlockingQueue

我的第一个问题是,是否有办法通过Hazelcast实现这一目标。 我的第二个问题是,是否有其他IMDG数据网格易于配置并嵌入到允许这样做的现有应用程序中。

提前感谢您的意见。

2 个答案:

答案 0 :(得分:1)

https://github.com/hazelcast/hazelcast-code-samples/tree/master/spi/priority-queue能做你需要的吗?

它是一个完整的工作示例 - 显示如何扩展Hazelcast以添加优先级队列。需要稍微调整一下才能达到生产质量,而且一些单元测试不会出错。

答案 1 :(得分:0)

我知道已经有点晚了,但是Hazelcast终于为分布式PriorityQueue提供了开箱即用的支持。参见:https://github.com/hazelcast/hazelcast/pull/17201

这是常规队列的扩展,您只需在队列配置(https://github.com/hazelcast/hazelcast/pull/17201/files#diff-adec01c0eef8a0df650ac3c02789b91a2eafc8c2ffbb6e77c563dc88f5a5e9a2R559)中向其添加比较器即可:

<priority-comparator-class-name>your.comparator.Class</priority-comparator-class-name>

一旦Hazelcast IMDG 4.1发布并添加了文档,我将更新这篇文章。