2009-04-01 14 views
5

Czy ktoś użył funkcji grupowania wiadomości w ActiveMQ?Wydajność grupowania komunikatów ActiveMQ

http://activemq.apache.org/message-groups.html

Byłoby to bardzo przydatna funkcja dla projektu pracuję nad, ale jestem ciekaw, jak dobrze ten skal fabularne i wykonuje. W naszym systemie musielibyśmy grupować komunikaty w grupy składające się z około 3-5 komunikatów, więc w trakcie procesu będziemy ciągle dodawać grupy. W tym przypadku wydaje się, że w końcu skończy nam się pamięć, próbując przechowywać wszystkie grupy.

Interesują mnie wszelkie doświadczenia/przemyślenia/plusy/minusy.

Odpowiedz

7

Użyłem grup wiadomości w wielu projektach i działa świetnie. Chociaż do pełnego ujawnienia byłem jednym z ludzi, którzy naciskają na grupy dyskusyjne i wykonali wiele początkowych prac wdrożeniowych.

Przypadki użycia grup wiadomości pochodzą z partycjonowania dużych hierarchii tematów; takie jak radzenie sobie z symbolami zasobów finansowych i tym podobne. Chcieliśmy, aby grupy wiadomości były w stanie używać bardzo drobnoziarnistych wyrażeń korelacji (ciągi JMSXGroupID) - możesz więc użyć daty, symbolu giełdowego i typu produktu jako identyfikatora grupy - lub identyfikatora transakcji klienta lub firmy.

Aby uniknąć przechowywania każdego ciągu identyfikacyjnego grupy w pamięci, domyślny dostawca używa mieszania wartości mieszania - więc przechowujemy tylko mapowanie mieszających się segmentów na klientach, a nie na poszczególne ciągi. Więc skaluje się do tylu identyfikatorów grup, ile chcesz użyć! Oznacza to również, że nie musimy "czyścić" starych identyfikatorów grup wiadomości itp.

+2

Załóżmy, że 'JMSXGroupID' jest równe niektórym nie, tj. 3345. Wtedy wszystkie wiadomości z' JMSXGroupID' = 3345 przejdą do tego samego konsument. Załóżmy jednak, że dynamicznie dodaję nowego konsumenta, niż to, jak activeMq zapewnia wysyłanie wiadomości 3345 do tego samego starego konsumenta (jak mówisz, przechowuje on skrót nazwy identyfikatora). Dzięki. – Trying

+0

Nie do końca rozumiem, dlaczego użycie hash zastąpić każdy ciąg GroupID byłby skuteczny? Czy wartość skrótu jest bardzo mała? Ale co jeśli mam milion nowych GroupIDów każdego dnia? – flycee