2012-02-02 30 views
6

Obecnie piszę system rozproszony przy użyciu hazelcast. Mam kilka pytań dotyczących kolejki zaimplementowanej przy użyciu hazelcast.Kolejka Hazelcast Info

  1. Jaki jest najlepszy sposób przetwarzania danych z kolejki? Obecnie mam wątki na każdym "węźle" odczytujące kolejkę blokującą przetwarzającą dane. Czy to jest poprawne, czy jest jakaś klasa, której nie jestem świadomy, która zajmuje się tym jak JMS lub messageListener?
  2. Widzę, że istnieje ustawienie czasu życia, które usunie wpis z kolejki po jej wygaśnięciu. Moje pytanie brzmi ... czy istnieje sposób na wykrycie usunięcia wygasłego przedmiotu z kolejki? Wiem, że są nasi słuchacze, ale to nie pomaga, ponieważ jest ono uruchamiane we wszystkich "węzłach", a nie tylko w jednym. Szukam sposobu wykonywania kodu dla każdej wygasłej wiadomości (podobnie jak kolejka z martwą literą).

Wszelkie uwagi i porady w tej sprawie byłyby bardzo mile widziane.

Dzięki

Odpowiedz

9
  1. Nie ma innego sposobu, w tej chwili. Więc będziesz mieć swoje wątki na każdym węźle wywołującym queue.take(). Zespół Hazelcast planuje dodać IQueue.addQueueConsumer (QueueConsumer), który będzie zachowywał się podobnie do JMS MessageListener

  2. Masz rację. Dodawanie słuchaczy nie jest dobrym sposobem na to, ponieważ jest to bardzo kosztowna operacja. Możesz utworzyć problem na ten temat pod numerem http://code.google.com/p/hazelcast/issues. Na pewno fajnie jest mieć funkcję.

-talip @ hazelcast

+0

Dziękuję za odpowiedź! – Paul

+1

Po prostu ciekawy, czy któryś z tych elementów został rozwiązany od 2012. – Snekse

+1

nope, addQueueConsumer wciąż brakuje: http://docs.hazelcast.org/docs/3.6/javadoc/com/hazelcast/core/IQueue.html –