我正在评估Hazelcast IMDG,以便用它来减少一些数据库瓶颈。我们的应用程序在许多节点上运行,这些节点从位于中间的数据库并行处理数据。
我们使用信号量表来分发工作,这正是我们考虑用Hazelcast阻塞队列取代的。
然而,一些要处理的消息比其他消息具有更高的优先级,这让我开始怀疑,因为Hazelcast似乎没有等效的java.util.concurrent.PriorityBlockingQueue
。
我的第一个问题是,是否有办法通过Hazelcast实现这一目标。 我的第二个问题是,是否有其他IMDG数据网格易于配置并嵌入到允许这样做的现有应用程序中。
提前感谢您的意见。
答案 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发布并添加了文档,我将更新这篇文章。