2012-02-02 89 views
6

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

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

任何意见或建议,将不胜感激。

感谢

回答

9
  1. 有目前没有其他办法。所以你将在每个节点上调用queue.take()。 Hazelcast团队计划添加IQueue.addQueueConsumer(QueueConsumer),其行为类似于JMS MessageListener

  2. 你说得对。添加监听器并不是很好的做法,因为这是非常昂贵的操作。您可能想要在http://code.google.com/p/hazelcast/issues处为此创建问题。有功能的确很好。

-talip @ hazelcast

+0

谢谢您的回复! – Paul 2012-02-02 09:50:06

+1

只是好奇,如果这些项目之一已被解决自2012年以来。 – Snekse 2015-06-04 15:15:52

+1

nope,addQueueConsumer仍然失踪:http://docs.hazelcast.org/docs/3.6/javadoc/com/hazelcast/core/IQueue.html – 2016-07-08 15:48:27