Hazelcast 中的优先级阻塞队列

Priority Blocking Queue in Hazelcast

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

我们使用信号量 table 来分配工作,这就是我们正在考虑用 Hazelcast 阻塞队列替换的东西。

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

的等价物

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

提前感谢您的意见。

这个 https://github.com/hazelcast/hazelcast-code-samples/tree/master/spi/priority-queue 能满足您的需求吗?

这是一个完整的示例 -- 展示了如何扩展 Hazelcast 以添加优先级队列。需要稍微调整以使其达到生产质量,并且一些单元测试不会出错。

我知道有点晚了,但 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 发布并添加文档,我将更新此 post。