6

我目前正在使用 hazelcast 编写分布式系统。我有几个关于使用 hazelcast 实现的队列的问题。

  1. 处理队列中数据的最佳方法是什么?我目前在每个“节点”上都有线程读取处理数据的阻塞队列。这是正确的还是有一些我不知道的类会像 JMS 或 messageListener 一样处理这个问题?
  2. 我看到有一个 time-to-live-seconds 设置,一旦过期,它将从队列中删除条目。我的问题是......有没有办法检测从队列中删除过期项目?我知道有侦听器,但这无济于事,因为它是在所有“节点”上触发的,而不仅仅是一个。我正在寻找一种为每个过期消息执行代码的方法(类似于死信队列)。

对此事的任何意见或建议将不胜感激。

谢谢

4

1 回答 1

9
  1. 目前没有其他办法。因此,每个节点上的线程都会调用 queue.take()。Hazelcast 团队计划添加 IQueue.addQueueConsumer(QueueConsumer),其行为类似于 JMS MessageListener

  2. 你说的对。添加侦听器不是很好的方法,因为它是非常昂贵的操作。您可能想在http://code.google.com/p/hazelcast/issues上为此创建一个问题。有特色当然很好。

-talip@榛树

于 2012-02-02T09:46:42.980 回答