Frage Was genau ist Apache Camel?


Ich verstehe nicht genau was Kamel tut.

Wenn Sie eine Einführung zu Camel geben könnten:

  • Was genau ist es?
  • Wie interagiert es mit einer in Java geschriebenen Anwendung?
  • Ist es etwas, das mit dem Server zusammenpasst?
  • Ist es ein unabhängiges Programm?

Bitte erklären Sie, was Camel ist.


1137
2018-01-13 02:32


Ursprung


Antworten:


Wenn Sie 5 bis 10 Minuten haben, empfehle ich den Leuten generell, dies zu lesen Integration mit Apache Camel von Jonathan Anstey. Es ist ein gut geschriebenes Stück, das eine kurze Einführung und einen Überblick über einige der Konzepte von Camel gibt und einen Anwendungsfall mit Codebeispielen implementiert. Darin schreibt Jonathan:

Apache Camel ist ein Open-Source-Java-Framework, das sich darauf konzentriert, die Integration für Entwickler einfacher und zugänglicher zu machen. Dies geschieht durch:

  • konkrete Implementierungen aller weit verbreiteten Unternehmensintegrationsmuster (EIP)
  • Konnektivität zu einer großen Vielfalt von Transporten und APIs
  • Einfach zu verwendende domainspezifische Sprachen (DSLs) zum Verbinden von EIPs und Transporten

Es gibt auch ein kostenloses Kapitel von Kamel in Aktion welches Camel im ersten Kapitel vorstellt. Jonathan ist ein Co-Autor dieses Buches mit mir.


596
2018-01-13 10:49



Mein Ansatz, dies auf eine leichter zugängliche Weise zu beschreiben ...

Um zu verstehen, was Apache Camel ist, müssen Sie verstehen, was Enterprise Integration Patterns sind.

Beginnen wir mit dem, was wir vermutlich bereits wissen: Das Singleton-Muster, das Factory-Muster, usw .; Sie sind nur eine Möglichkeit, Ihre Lösung für das Problem zu organisieren, aber sie sind selbst keine Lösungen. Diese Muster wurden analysiert und extrahiert für den Rest von uns von der Gang of Four, als sie ihr Buch veröffentlichten: Designmuster. Sie haben einigen von uns enorme Anstrengungen erspart, darüber nachzudenken, wie wir unseren Code am besten strukturieren können.

Ähnlich wie die Viererbande verfassten Gregor Hohpe und Bobby Woolf das Buch Unternehmensintegrationsmuster (EIP), in dem sie eine Reihe neuer Muster vorschlagen und dokumentieren Baupläne für wie wir könnten Beste Entwerfen von großen komponentenbasierten Systemen, bei denen Komponenten auf demselben Prozess oder auf einer anderen Maschine ausgeführt werden können.

Sie schlagen grundsätzlich vor, dass wir unser System so strukturieren sollen Botschaft orientiert - wo Komponenten miteinander kommunizieren, indem sie Nachrichten als Inputs und Outputs verwenden und absolut nichts anderes. Sie zeigen uns eine ganze Reihe von Mustern, aus denen wir auswählen und in unseren verschiedenen Komponenten implementieren können, die zusammen das ganze System bilden.

Was ist Apache Camel?

Apache Camel bietet Ihnen die Schnittstellen für die EIPs, die Basisobjekte, häufig benötigte Implementierungen, Debugging-Tools, ein Konfigurationssystem und viele andere Helfer, die Ihnen eine Menge Zeit sparen, wenn Sie Ihre Lösung implementieren wollen, um den EIPs zu folgen.

Nehmen Sie MVC. MVC ist in der Theorie ziemlich einfach und wir könnten es ohne jegliche Framework-Hilfe implementieren. Aber gute MVC-Frameworks geben uns die Struktur bereit und haben die Extra-Meile gegangen und durchdachten alle anderen "Seite" Dinge, die Sie brauchen, wenn Sie ein großes MVC-Projekt erstellen und deshalb verwenden wir sie die meiste Zeit.

Genau das ist Apache Camel für EIPs. Es ist ein vollständig produktionsfertiger Rahmen für Leute, die ihre Lösung implementieren wollen, um den EIPs zu folgen.


929
2017-07-18 11:38



Ein ... Erstellen Projektbeschreibung sollte nicht kompliziert sein.

Ich sage:

Apache Camel ist Messaging-Technologie Klebstoff mit Routing. Es verbindet Messaging Start- und Endpunkte, die die Übertragung von Nachrichten aus verschiedenen Quellen zu verschiedenen Zielen ermöglichen. Zum Beispiel: JMS -> JSON, HTTP -> JMS oder Funneling FTP -> JMS, HTTP -> JMS, JSON -> JMS

Wikipedia sagt:

Apache Camel ist eine regelbasierte Routing- und Mediationsengine, die eine Java-Objekt-basierte Implementierung der Enterprise Integration Patterns mithilfe einer API (oder deklarativen Java Domain Specific Language) zur Konfiguration von Routing- und Mediationsregeln bereitstellt. Die domänenspezifische Sprache bedeutet, dass Apache Camel die typsichere intelligente Vervollständigung von Routing-Regeln in Ihrer IDE unter Verwendung von normalem Java-Code ohne große Mengen an XML-Konfigurationsdateien unterstützt. Die XML-Konfiguration in Spring wird jedoch ebenfalls unterstützt.

Sehen? Das war nicht schwer, oder?


636
2018-05-31 15:37



Zusamenfassend:

Wenn eine Verbindung / Integration von Systemen erforderlich ist, müssen Sie wahrscheinlich eine Verbindung mit einer Datenquelle herstellen und diese Daten dann entsprechend Ihren Geschäftsanforderungen verarbeiten.

Um das zu tun:

1) Sie könnten ein benutzerdefiniertes Programm entwickeln, das es tun würde (könnte zeitaufwendig und schwer zu verstehen sein, für andere Entwickler warten)

2) Alternativ können Sie Apache Camel auch auf standardisierte Weise verwenden (es hat die meisten Connectors bereits für Sie entwickelt, Sie müssen es nur einrichten und Ihre Logik - Process genannt) anschließen:

Camel wird Ihnen helfen:

  1. Verbraucht Daten von jeder Quelle / Format
  2. Verarbeiten Sie diese Daten
  3. Daten in jede Quelle / Format ausgeben

Durch die Verwendung von Apache Camel können Sie Ihr System einfach für andere Entwickler verstehen / pflegen / erweitern.

Apache Camel wurde mit Enterprise Integration Patterns entwickelt. Die Muster helfen dir, Systeme gut zu integrieren :-)


106
2018-06-04 20:48



Ein Diagramm ist besser als Tausende von Beschreibung. Dieses Diagramm veranschaulicht die Architektur von Camel.

enter image description here


66
2017-12-27 02:48



Camel sendet Nachrichten von A nach B:

enter image description here

Warum ein ganzer Rahmen dafür? Nun, was wenn du hast:

  • viele Absender und viele Empfänger
  • ein Dutzend Protokolle (ftp, http, jms, etc.)
  • viele komplexe Regeln
    • Senden Sie eine Nachricht A nur an die Empfänger A und B
    • Senden Sie eine Nachricht B an Empfänger C als XML, aber teilweise Übersetzen es, bereichern es (Metadaten hinzufügen) und WENN Bedingung X, dann sende es auch an Empfänger D, aber als CSV.

So, jetzt brauchst du:

  • Übersetzen zwischen Protokollen
  • kleben Komponenten zusammen
  • Routen definieren - was wohin geht
  • Filter einige Dinge in einigen Fällen

Camel gibt dir die oben genannten (und mehr) Out-of-the-Box:

enter image description here

mit einer coolen DSL-Sprache, um das Was und Wie zu definieren:

  new DefaultCamelContext().addRoutes(new RouteBuilder() {
        public void configure() {
            from("jms:incomingMessages")
                    .choice() // start router rules
                    .when(header("CamelFileName")
                            .endsWith(".xml"))
                    .to("jms:xmlMessages")
                    .when(header("CamelFileName")
                            .endsWith(".csv"))
                    .to("ftp:csvMessages");
}

Siehe auch Dies und Dies und Kamel in Aktion (wie andere gesagt haben, ein ausgezeichnetes Buch!)


54
2018-04-28 17:53



Bevor Sie versuchen, Apache Camel zu verstehen, müssen Sie vor allem Enterprise Integration Patterns verstehen. Nicht jeder auf dem Gebiet ist sich dessen bewusst. Während Sie sicherlich das Enterprise Integration Patterns-Buch lesen können, wäre es ein schneller Weg, sich mit ihnen vertraut zu machen, etwas wie den Wikipedia-Artikel zu lesen Enterprise Application Integration.

Wenn Sie den Fachbereich gelesen und verstanden haben, würden Sie den Zweck von Apache Camel viel eher verstehen

HTH


45
2018-01-13 03:36



Basierend auf der Analogie

Kamel-basiertes Routing kann sehr einfach verstanden werden, indem man sich in die Rolle eines Airline-Besitzers (zB American Airlines, Jet Airways) versetzt.

Zweck Ihrer "Fluggesellschaft" ist es, "Passagiere" von einer "Stadt" zu einer anderen "in der Welt" zu befördern. Sie benutzen Flugzeuge von verschiedenen 'Flugzeugfirmen' wie Boeing, Airbus, HAL für die Beförderung von Passagieren.

Die Fluggäste Ihrer Fluggesellschaft benutzen die "Flughäfen" der Stadt und legen sie am Flughafen der Stadt ab. Ein Passagier kann zu mehreren Städten "reisen", aber überall müssen sie durch den Flughafen reisen, um zwischen dem Flugzeug Ihrer Fluggesellschaft und der Stadt zu reisen.

Beachten Sie, dass ein Passagier, der von der Stadt "abfährt", im Wesentlichen in die Flugzeuge Ihrer Fluggesellschaft "einsteigt". Und ein Passant, der in die Stadt "ankommt", verlässt im Wesentlichen das Flugzeug. Da wir in der Rolle eines Airline-Besitzers stehen, sind die Begriffe "ankommender Passagier" und "abfliegender Passagier" von unseren herkömmlichen Vorstellungen, die auf der Städteperspektive basieren, umgekehrt.

Die gleiche "Flughafen" -Infrastruktur jeder Stadt wird von "abfliegenden" Passagieren und "ankommenden" Passagieren genutzt. Ein Flughafen bietet abfliegenden Fluggästen eine "abfliegende Infrastruktur", die sich von der für ankommende Fluggäste bereitgestellten "Ankunftsinfrastruktur" unterscheidet.

Passagiere können ihren Tag mit ihren Aktivitäten fortführen, und zwar aufgrund der verschiedenen "Annehmlichkeiten", die Ihre Fluggesellschaften während der Reise im Flugzeug bereitstellen.

Darüber hinaus bietet Ihre Fluggesellschaft Lounge-Einrichtungen für spezielle Behandlungen, wie zum Beispiel "die lokale Sprache verstehen" oder Sie auf die "Reise" vorzubereiten.

Wir ersetzen einige der oben verwendeten Wörter / Phrasen durch folgende:

Ihre Fluggesellschaft: Apache Camel

Luftverkehrsunternehmen: Transportmechanismen

Flugzeug Ihrer Fluggesellschaft: Apache Camel zugrunde liegenden Transportmechanismus

tragen: Route

Passagiere: Nachricht;

Stadt: System;

Flughafen: Kamelkomponente;

lokale Sprachen verstehen: Typ Conversions;

abfliegen: produzieren, produzieren

ankommen: verbrauchen, verbraucht

Reise: geroutet

Ausstattung: zur Verfügung gestellt

Nach dem Ersetzen der Wörter, hier ist, was Sie bekommen:

Zweck von 'Apache Camel' ist es, "Nachrichten" von einem "System" zu einem anderen auf der Welt zu leiten. Apache Camel verwendet verschiedene Transportmechanismen für das Nachrichtenrouting.

Apache Camel nimmt Nachrichten mithilfe der "Kamel-basierten Komponente" des "Von" -Systems auf und löscht sie mithilfe der "Camel-basierten Komponente" des "An" -Systems. Eine Nachricht kann an mehrere Systeme weitergeleitet werden, aber überall müssen sie "Camel-basierte Komponenten" durchlaufen, um zwischen dem "zugrunde liegenden Transportmechanismus" von Apache Camel und dem System zu reisen.

Beachten Sie, dass eine Nachricht, die vom System "produziert" wird, im Wesentlichen in den zugrunde liegenden Transportmechanismus von Apache Camel "konsumiert" wird. Und eine Nachricht, die von einem System konsumiert wird, wird im Wesentlichen durch den "zugrundeliegenden Transportmechanismus" von Apache Camel erzeugt.

Da wir versuchen Camel zu verstehen, müssen wir hier aus Camels Perspektive denken. Die Bedeutung der Begriffe "Konsumentenbotschaft" und "Produzentenbotschaft" ist somit umgekehrt zu unseren konventionellen Vorstellungen, die auf einer Systemperspektive basieren.

Die gleiche "Coding-Infrastruktur für Camel-basierte Komponenten" wird von "Producer Message" und "Consumer Message" verwendet. Eine "Camel-basierte Komponente" stellt einen "Producer-Endpunkt" für "Producer Message" und einen "Consumer-Endpunkt" für "Consumer Message" zur Verfügung.

Nachrichten können von Camel verarbeitet werden, wenn sie weitergeleitet werden.

Zusätzlich zu diesem Routing bietet Camel spezielle Funktionen wie "Typkonvertierung" und viele mehr ...


41
2018-04-13 12:54



Wenn Sie sich mit Enterprise Integration Patterns auskennen, ist Apache Camel ein Integrations-Framework, das alle EIPs implementiert.

Und Sie können Camel als eigenständige Anwendung in einem Web-Container bereitstellen.

Wenn Sie mehrere Anwendungen mit unterschiedlichen Protokollen und Technologien integrieren müssen, können Sie Camel verwenden.


34
2018-01-13 02:59



Eine Definition aus einer anderen Perspektive:

Apache Camel ist ein Integrations-Framework. Es besteht aus einigen Java-Bibliotheken, die Ihnen bei der Implementierung von Integrationsproblemen auf der Java-Plattform helfen. Was das bedeutet und wie es sich von APIs auf der einen Seite und einem Enterprise Service Bus (ESB) auf der anderen Seite unterscheidet, wird in meinem Artikel beschrieben.Wann man Apache Camel benutzt".


23
2018-03-16 17:08