2009-04-01 23 views
5

Hat jemand die Nachrichtengruppierungsfunktion in ActiveMQ verwendet?ActiveMQ-Nachrichtengruppierungsleistung

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

Dies wäre eine wirklich nützliche Eigenschaft für ein Projekt sein, auf ich arbeite, aber ich bin neugierig, wie gut dieses Feature Skalen und führt. In unserem System müssten wir Nachrichten in Gruppen von ungefähr 3-5 Nachrichten gruppieren, so dass wir kontinuierlich Gruppen hinzufügen würden, während der Prozess abläuft. In diesem Fall scheint es, als würden wir irgendwann nicht mehr genügend Speicher haben, um alle Gruppen zu speichern.

Ich interessiere mich für irgendwelche Erfahrungen/Gedanken/Vorteile/Nachteile.

Antwort

7

Ich habe Message Groups in vielen Projekten verwendet und es funktioniert super. Obwohl ich für die vollständige Offenlegung zuständig war, war ich einer der Leute, die nach Message Groups drängten und einen Großteil der anfänglichen Implementierungsarbeit geleistet haben.

Der Anwendungsfall von Nachrichtengruppen kam von der Partitionierung großer Themenhierarchien; wie der Umgang mit finanziellen Aktiensymbolen und dergleichen. Wir wollten, dass Nachrichtengruppen sehr feinkörnige Korrelationsausdrücke (JMSXGroupID-Zeichenfolgen) verwenden können, so dass Sie das Datum, das Aktiensymbol und den Produkttyp als Gruppen-ID oder die Kunden- oder Geschäftsvorgangs-ID oder was auch immer verwenden können.

Um zu vermeiden, dass jeder Gruppen-ID-String im Speicher verbleibt, verwendet der Standardanbieter Hash-Buckets. Daher speichern wir nur die Zuordnung von Hash-Buckets zu den Consumenten - nicht die einzelnen Strings. Daher skaliert es auf so viele Gruppen-IDs, wie Sie verwenden möchten! Es bedeutet auch, dass wir die alten Nachrichtengruppen-IDs usw. nicht "bereinigen" müssen.

+2

Angenommen, die 'JMSXGroupID' ist gleich Nein, dh 3345. Dann werden alle Nachrichten mit' JMSXGroupID' = 3345 gleich gehen Verbraucher. Aber nehmen wir an, ich füge dynamisch einen neuen Consumer hinzu, als dass activeMq sicherstellt, dass die 3345-Nachricht an denselben alten Consumer gesendet wird (da Sie sagen, dass sie den Hash der ID speichert). Vielen Dank. – Trying

+0

Ich verstehe nicht ganz, warum die Verwendung von Hash ersetzen jeden GroupID String wirksam wäre? Ist der Hash-Wert sehr klein? Aber was, wenn ich jeden Tag eine Million neue GroupIDs habe? – flycee