Ordentliche Warteschlange vs SEDA-Warteschlange

8

Als Apache Camel neu, habe ich kürzlich seine lange Liste von Komponenten überprüft und bin auf ihre Unterstützung für die SEDA-Warteschlange gestoßen Komponenten.

Die Seite hat mir wenig Sinn gemacht, deshalb habe ich ein paar Online-Suchen nach dem Begriff "SEDA queue" gemacht und den Wikipedia-Artikel hier .

Nachdem ich diesen Artikel gelesen habe, kann ich nicht sagen, was der Unterschied zwischen einer SEDA-Warteschlange und einer normalen "normalen" Warteschlange ist! Beide umfassen die Entkopplung von Systemen durch die Verwendung asynchroner Warteschlangen.

Aus dem Artikel klingt "SEDA" einfach wie eine Architektur, die darin besteht, eine Warteschlange zwischen jeder Komponente zu platzieren. Ist das korrekt?

Aber wenn es nur eine Architektur ist, warum ist dann eine "SEDA" -Warteschlange eine spezielle Apache Camel-Komponente?

    
IAmYourFaja 06.02.2012, 14:14
quelle

3 Antworten

4

SEDA-Warteschlangen sind wie eine normale Warteschlange (und wie Peter oben gesagt hat, ist ihnen in Camel ein Thread-Pool als Teil der Komponente zugeordnet). SEDA ist eine Architektur. Die SEDA-Komponente in Camel verwendet In-Memory-Warteschlangen in Ihrem Prozess und ist eine separate Komponente, um sie von der anderen Warteschlangenkomponente in Apache camel zu unterscheiden, nämlich der JMS-Komponente.

    
gregwhitaker 06.02.2012, 14:18
quelle
3

SEDA ist ein Akronym, das für Staged Event Driven Architecture steht und als Mechanismus zur Regelung des Flusses zwischen verschiedenen Phasen der Nachrichtenverarbeitung konzipiert ist. Die Idee besteht darin, die Häufigkeit der Nachrichtenausgabe aus einem Gesamtprozess so auszugleichen, dass sie mit der Eingabe übereinstimmt. Sie ermöglicht es einem Enpoint-Consumer-Threads, die Arbeit lang andauernder Operationen in den Hintergrund zu verlagern, wodurch sie Nachrichten konsumieren können vom Transport. Wenn ein Austausch an einen seda: Endpunkt übergeben wird, wird er in eine BlockingQueue eingefügt. Die Liste existiert innerhalb des camel-Kontexts, was bedeutet, dass nur diese Routen, die sich im selben Kontext befinden, mit diesem Endpunkttyp verbunden werden können. Die Warteschlange ist standardmäßig unbegrenzt. Dies kann jedoch geändert werden, indem das Größenattribut für den URI des Konsumenten festgelegt wird.

Standardmäßig liest ein einzelner Thread, der dem Endpunkt zugewiesen ist, Austausche aus der Liste und verarbeitet sie über die Route. Wie im vorherigen Beispiel zu sehen ist, ist es möglich, die Anzahl der concurrenctConsumers zu erhöhen, um sicherzustellen, dass Austauschvorgänge von dieser Liste zeitnah verarbeitet werden.

Das SEDA-Muster eignet sich am besten für die Verarbeitung der InOnly-Nachrichten, bei denen eine Route die Verarbeitung beendet und die anderen an die nächste übergeben werden, um mit der nächsten Phase fertig zu werden. Es ist möglich, eine Antwort von seda: endpoint zu verlangen, indem Sie sie aufrufen, wenn das Nachrichtenaustauschmuster InOut ist

Referenz. Apache Camel Developer's Kochbuch

    
castilloRT 14.09.2016 05:38
quelle
1

SEDA bietet die Entkopplung der Komponenten innerhalb einer einzigen Kamelroute. Oder in einem einzigen Prozess. . Dies bedeutet, dass Sie Async-Aufrufe an andere Komponenten ausführen können. Dies ist eine Blockierungswarteschlange im Speicher. Auf der anderen Seite wird JMS für die Entkopplung des gesamten Systems verwendet. JMS wird einen externen Broker haben. SEDA wird nur einen separaten Thread von der Consumer-Komponente erstellen

    
Somasundaram Sekar 03.06.2013 02:39
quelle

Tags und Links