Ich habe noch keine Erfahrung mit * MQs und möchte Kenntnisse über JMS und Nachrichtenwarteschlangen im Allgemeinen aufbauen. Auf diese Weise frage ich mich, ob ich mit ActiveMQ beginnen oder es einfach ganz "ignorieren" und mir zunächst Apollo beibringen soll. Ist Apollo so funktionsreich wie ActiveMQ? Implementiert es JMS 2.0 (ich sehe, dass ActiveMQ mit 1.1 hängen geblieben ist)? Vermisse ich etwas wirklich Wichtiges?
Wie vergleicht sich Kafka mit diesen beiden Lösungen?
jms
activemq
message-queue
apache-kafka
apollo
Martin
quelle
quelle
Antworten:
Apache ActiveMQ ist ein großartiges Arbeitstier voller Funktionen und netter Dinge. Es ist nicht die schnellste MQ-Software, aber schnell genug für die meisten Anwendungsfälle. Zu den Funktionen gehören flexible Clustring, Failover, Integration in verschiedene Anwendungsserver, Sicherheit usw.
Apache Apollo ist ein Versuch, einen neuen Kern für ActiveMQ zu schreiben, um mit einer großen Anzahl von Clients und Nachrichten fertig zu werden. Es hat nicht alle netten und praktischen Funktionen von ActiveMQ, skaliert aber viel besser. Apache Apollo ist eine sehr schnelle MQ-Implementierung, wenn Sie ihm einen großen Multi-Core-Server und Tausende von gleichzeitigen Verbindungen geben. Es hat eine schöne, einfache Benutzeroberfläche, ist aber keine "Einheitslösung".
Es wird anscheinend versucht, eine Reihe von ActiveMQ-Funktionen unter dem Namen ActiveMQ Artemis mit HornetQ zusammenzuführen. HornetQ unterstützt JMS2.0, daher kann ich davon ausgehen, dass es wahrscheinlich in ActiveMQ 6.x angezeigt wird.
JIRA , Github
Kafka ist ein anderes Tier. Es ist ein sehr einfacher Nachrichtenbroker, mit dem persistente Veröffentlichungsabonnements (Themen) so schnell wie möglich über mehrere Server skaliert werden sollen. Für kleine und mittlere Bereitstellungen ist Kafka wahrscheinlich nicht die beste Option. Es hat auch die Möglichkeit, Dinge zu tun, um den hohen Durchsatz zu erreichen. Sie müssen also viel in Bezug auf Flexibilität handeln, um einen hohen verteilten Durchsatz zu erzielen. Wenn Sie neu im Bereich MQ und Broker sind, ist Kafka wohl übertrieben. Auf der anderen Seite - wenn Sie einen Servercluster mit anständiger Größe haben und sich fragen, wie Sie so viele Nachrichten wie möglich durch ihn pushen können - probieren Sie Kafka aus!
quelle
Dies ist eine ältere Frage, aber ich werde hier eine modernere Antwort geben.
BEARBEITEN: Die Veröffentlichung von 2.3.0 Apache Artemis fand am 5. September 2017 statt. Es scheint also ab sofort Fortschritte zu machen. Aber ( Link- ) Changelog scheint immer noch zu beängstigend.
quelle
Ich bin ein Leistungsbenchmark von ActiveMQ, Apollo, HornetQ unter einem nicht persistenten Szenario und einem persistenten Szenario. Ich denke, es wird hilfreich für Sie sein, zu entscheiden, welches verwendet werden soll, den Link wie unten gezeigt: http://hiramchirino.com/jms- Benchmark / ubuntu-2600k / index.html
quelle
Apache Kafka kann als "Distributed Streaming Platform" bezeichnet werden, wobei ActiveMQ , eine MOM (messagingorientierte Middleware), ein "General Purpose Message Broker" ist .
Kafka macht eine Sache und eine Sache wirklich gut: In einer Publish / Subscribe- Architektur (Pub / Sub) werden Nachrichten in Themen (Protokolle, die nach Partitionen verteilt sind) geschrieben, von denen die Verbraucher dann per Offset konsumieren. Kafka, das für die Cloud mit einem sehr hohen Durchsatz entwickelt wurde, konzentriert sich darauf und ist heutzutage die Anlaufstelle für asynchrones Messaging.
ActiveMQ unterstützt sowohl Pub / Sub- als auch Punkt-zu-Punkt- Semantik. In letzterem Fall verarbeitet eine Warteschlange einzelne Nachrichten zwischen einem einzelnen Produzenten und einem bestimmten Konsumenten. Dies ist wie pub / sub asynchron, funktioniert jedoch etwas anders: Wenn ein Verbraucher eine Nachricht in der Warteschlange erhält, diese jedoch nicht bestätigt, wird die Nachricht an einen anderen Verbraucher gesendet. ActiveMQ unterstützt auch verschiedene Messaging-Protokolle, darunter AMQP, STOMP, JMS, CAMEL und MQTT.
Während Apache Kafka die Anlaufstelle für einfache asynchrone Kommunikation sein kann; ActiveMQ scheint von einigen für kompliziertere Routing-Muster wie Unternehmensmuster bevorzugt zu werden. Viele argumentieren jedoch, dass Kafka eine Verbesserung gegenüber ActiveMQ darstellt, beispielsweise aus Gründen eines höheren Durchsatzes , einer effizienteren Verwaltung von Partitionen für Protokolle / Themen und einer feineren Abstimmung ACLs für Verbraucher, die ein Thema konsumieren.
quelle