it-swarm.com.de

Was genau ist Apache Camel?

Ich verstehe nicht genau, was Kamel tut.

Wenn Sie in 101 Worten eine Einführung in Camel geben könnten:

  • Was genau ist das
  • Wie interagiert es mit einer in Java geschriebenen Anwendung?
  • Passt das zum Server?
  • Ist es ein eigenständiges Programm?

Bitte erläutern Sie, was Kamel ist.

1281
Myy

Wenn Sie 5 bis 10 Minuten Zeit haben, empfehle ich im Allgemeinen, 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 Konzepte von Camel gibt und einen Anwendungsfall mit Codebeispielen implementiert. Darin schreibt Jonathan:

Apache Camel ist ein Open Source Java Framework, das darauf abzielt, die Integration für Entwickler einfacher und zugänglicher zu machen. Dazu stellt es Folgendes bereit:

  • konkrete Implementierungen aller weit verbreiteten Enterprise Integration Patterns (EIPs)
  • konnektivität zu einer Vielzahl von Transporten und APIs
  • einfach zu verwendende Domain Specific Languages ​​(DSLs), um EIPs und Transporte miteinander zu verbinden

Es gibt auch ein freies Kapitel von Camel in Action , das Camel im ersten Kapitel vorstellt. Jonathan ist Mitautor dieses Buches bei mir.

666
Claus Ibsen

Mein Ansatz, dies auf eine zugänglichere Art und Weise zu beschreiben ...

Um zu verstehen, was Apache Camel ist, müssen Sie die Enterprise-Integrationsmuster kennen.

Beginnen wir mit dem, was wir vermutlich bereits wissen: Das Singleton-Muster, das Factory-Muster usw .; Sie dienen lediglich dazu, Ihre Problemlösung zu organisieren, sind jedoch keine Lösungen für sich. Diese Muster wurden von der Viererbande analysiert und für den Rest von uns extrahiert, als sie ihr Buch veröffentlichten: Design Patterns . Sie haben einigen von uns enorme Anstrengungen erspart, um zu überlegen, wie wir unseren Code am besten strukturieren können.

Ähnlich wie die Viererbande haben Gregor Hohpe und Bobby Woolf das Buch Enterprise Integration Patterns (EIP) verfasst, in dem sie eine Reihe neuer Muster und Blaupausen vorschlagen und dokumentieren wie wir am besten große komponentenbasierte Systeme entwerfen können, bei denen Komponenten auf demselben Prozess oder auf einer anderen Maschine ausgeführt werden können.

Sie schlagen grundsätzlich vor, unser System nach Nachrichten zu strukturieren, wobei Komponenten unter Verwendung von Nachrichten als Ein- und Ausgaben und absolut nichts anderem miteinander kommunizieren. Sie zeigen uns einen vollständigen Satz von Mustern, aus denen wir auswählen und in unseren verschiedenen Komponenten implementieren können, die zusammen das gesamte System bilden.

Also, 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 Hilfsmittel, die Ihnen viel Zeit sparen, wenn Sie Ihre Lösung zur Verfolgung der EIPs implementieren möchten.

MVC nehmen. MVC ist in der Theorie ziemlich einfach und wir könnten es ohne Framework-Hilfe implementieren. Gute MVC-Frameworks bieten uns jedoch die sofort einsatzbereite Struktur und haben uns die Mühe gemacht, alle anderen "Nebenaspekte" zu berücksichtigen, die Sie beim Erstellen eines großen MVC-Projekts benötigen. Deshalb verwenden wir sie die meiste Zeit.

Genau das ist Apache Camel für EIPs. Dies ist ein vollständiges, produktionsfertiges Framework für Leute, die ihre Lösung implementieren möchten, um den EIPs zu folgen.

1070
Amr Mostafa

Das Erstellen eines Projektbeschreibung sollte nicht kompliziert sein.

Ich sage:

Apache Camel ist die Messaging-Technologie für Routing. Es verbindet Messaging-Start- und -Endpunkte und ermöglicht die Übertragung von Nachrichten aus verschiedenen Quellen an verschiedene Ziele. Zum Beispiel: JMS -> JSON, HTTP -> JMS oder FTP-Trichter -> JMS, HTTP -> JMS, JSON -> JMS

Wikipedia sagt:

Apache Camel ist eine regelbasierte Routing- und Mediations-Engine, die eine Java objektbasierte Implementierung der Enterprise-Integrationsmuster mithilfe einer API (oder deklarativen Java domänenspezifischen Sprache) zum Konfigurieren von Routing- und Mediationsregeln bereitstellt. Die domänenspezifische Sprache bedeutet, dass Apache Camel die typsichere Vervollständigung von Routing-Regeln in Ihrer IDE mithilfe von regulärem Java Code ohne große Mengen an XML-Konfigurationsdateien unterstützen kann. Die XML-Konfiguration in Spring wird ebenfalls unterstützt.

Sehen? Das war nicht schwer, oder?

650
David Newcomb

Zusamenfassend:

Wenn eine Verbindung/Integration von Systemen erforderlich ist, müssen Sie wahrscheinlich eine Verbindung zu 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 dies tun würde (möglicherweise zeitaufwendig und schwer zu verstehen, für andere Entwickler zu warten).

2) Alternativ können Sie Apache Camel verwenden, um dies auf standardisierte Weise zu tun (die meisten Anschlüsse sind bereits für Sie entwickelt, Sie müssen sie nur einrichten und Ihre Logik einbinden - Process genannt):

Camel hilft Ihnen bei:

  1. Daten aus beliebigen Quellen/Formaten verwenden
  2. Verarbeiten Sie diese Daten
  3. Daten in eine beliebige Quelle/ein beliebiges Format ausgeben

Durch die Verwendung von Apache Camel wird es für Sie einfacher, Ihr System zu verstehen, zu warten und für einen anderen Entwickler zu erweitern.

Apache Camel wurde mit Enterprise Integration Patterns entwickelt. Die Muster helfen Ihnen, Systeme auf eine gute Weise zu integrieren :-)

117
Marcin Wasiluk

Camel sendet Nachrichten von A nach B:

enter image description here

Warum ein ganzer Rahmen dafür? Was ist, wenn Sie:

  • viele Sender und viele Empfänger
  • ein Dutzend Protokolle (ftp, http, jms usw.)
  • 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 , übersetzen Sie sie jedoch teilweise , bereichern es (Metadaten hinzufügen) und WENN Bedingung X , dann senden es auch an Empfänger D, aber als CSV .

Also jetzt brauchst du:

  • zwischen Protokollen übersetzen
  • Kleben Sie Komponenten zusammen
  • routen definieren - was geht wohin
  • filtern einige Dinge in einigen Fällen

Kamel bietet Ihnen die oben (und mehr) aus der Box:

enter image description here

mit einer coolen DSL-Sprache können Sie definieren, was und wie:

  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 this und this und Camel in Action (wie andere gesagt haben, ein ausgezeichnetes Buch!)

85
Andrejs

Ein Diagramm ist besser als tausende von Beschreibungen. Dieses Diagramm zeigt die Architektur von Camel.

enter image description here

73
CrimsonFantasy

GESTÜTZT AUF ANALOGIE

Kamel-basiertes Routing ist sehr einfach zu verstehen, wenn Sie sich in die Lage eines Airline-Besitzers (z. B. American Airlines, Jet Airways) versetzen.

Zweck von "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, um Passagiere zu befördern.

Die Fluggäste Ihrer Fluggesellschaft steigen an den Flughäfen der Ab-Stadt ein und steigen am Flughafen der Ab-Stadt aus. Ein Passagier kann in mehrere Städte reisen, muss jedoch überall den Flughafen passieren, um zwischen dem Flugzeug Ihrer Fluggesellschaft und der Stadt hin und her zu fliegen.

Beachten Sie, dass ein Passagier, der aus der Stadt abfliegt, im Wesentlichen in das Flugzeug Ihrer Fluggesellschaft einfliegt. Und ein Passant, der in die Stadt kommt, verlässt im Wesentlichen das Flugzeug. Da wir im Besitz einer Fluggesellschaft sind, werden die Begriffe "ankommender Passagier" und "abfliegender Passagier" von unseren konventionellen Begriffen, die auf der Perspektive der Städte basieren, umgekehrt.

Dieselbe "Flughafen" -Infrastruktur jeder Stadt wird von "abfliegenden" Passagieren und "ankommenden" Passagieren genutzt. Ein Flughafen bietet eine "Abfluginfrastruktur" für abfliegende Passagiere, die sich von der "Ankunftsinfrastruktur" für ankommende Passagiere unterscheidet.

Passagiere können ihren Tag mit ihren Aktivitäten fortsetzen, da Ihre Fluggesellschaften während der Reise verschiedene "Annehmlichkeiten" im Flugzeug bieten.

Darüber hinaus bietet Ihre Fluggesellschaft Loungemöglichkeiten für spezielle Behandlungen wie das Verstehen der Landessprache oder die Vorbereitung auf die Reise.

Ersetzen wir einige der oben verwendeten Wörter/Phrasen durch folgende:

ihre Fluggesellschaft: Apache Camel

flugzeughersteller: Transportmechanismen

das Flugzeug Ihrer Fluggesellschaft: Der zugrunde liegende Transportmechanismus von Apache Camel

tragen: route

passagiere: Nachricht;

stadt: System;

flughafen: Camel Component;

verständnis der Landessprachen: Typumwandlungen;

abgang: Produzieren, Produziert

ankommen: verbrauchen, verbraucht

reise: geroutet

ausstattung: zur Verfügung gestellt

Nach dem Ersetzen der Wörter erhalten Sie Folgendes:

Zweck von 'Apache Camel' ist das Weiterleiten von 'Nachrichten' von einem 'System' zu einem anderen in der Welt. Apache Camel verwendet verschiedene Transportmechanismen für das Nachrichtenrouting.

Apache Camel nimmt Nachrichten mit 'Camel based Component' des 'from'-Systems auf und löscht sie mit der' Camel based Component 'des' to'-Systems. Eine Nachricht kann an mehrere Systeme weitergeleitet werden, sie muss jedoch überall die auf Kamelen basierenden Komponenten durchlaufen, um zwischen dem zugrunde liegenden Transportmechanismus von Apache Camel und dem System zu wechseln.

Beachten Sie, dass eine vom System 'erzeugte' Nachricht im Wesentlichen in den zugrunde liegenden Transportmechanismus von Apache Camel 'aufgenommen' wird. Und eine Nachricht, die von einem System konsumiert wird, wird im Wesentlichen vom zugrunde liegenden Transportmechanismus des Apache Camel erzeugt.

Da wir versuchen, Camel zu verstehen, müssen wir hier weiter aus der Perspektive von Camel denken. Die Bedeutung der Ausdrücke "Verbraucherbotschaft" und "Erzeugerbotschaft" wird daher von unseren herkömmlichen Begriffen, die auf der Perspektive eines Systems beruhen, umgekehrt.

Dieselbe Codierungsinfrastruktur der "Camel-basierten Komponente" wird von "Erzeugernachricht" und "Verbrauchernachricht" verwendet. Eine 'Camel-basierte Komponente' bietet einen 'Erzeugerendpunkt' für 'Erzeugernachricht' und einen 'Verbraucherendpunkt' für 'Verbrauchernachricht'.

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

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

52
DolphinJava

Eines der Dinge, die Sie verstehen müssen, bevor Sie versuchen, Apache Camel zu verstehen, sind Enterprise-Integrationsmuster. Nicht jeder auf dem Gebiet ist sich dessen bewusst. Sie können das Buch zu Enterprise-Integrationsmustern sicherlich lesen. Eine schnellere Möglichkeit, sich mit diesen Mustern vertraut zu machen, besteht darin, etwas wie den Wikipedia-Artikel über Enterprise Application Integration zu lesen.

Wenn Sie den Themenbereich gelesen und verstanden haben, ist es wahrscheinlicher, dass Sie den Zweck von Apache Camel verstehen

HTH

49
Crollster

Wenn Sie Enterprise Integration Patterns kennen, ist Apache Camel ein Integrationsframework, das alle EIPs implementiert.

Und Sie können Camel als eigenständige Anwendung in einem Webcontainer bereitstellen.

Grundsätzlich können Sie Camel verwenden, wenn Sie mehrere Anwendungen mit unterschiedlichen Protokollen und Technologien integrieren müssen.

34
Sunil

Eine Definition aus einer anderen Perspektive:

Apache Camel ist ein Integrationsframework. Es besteht aus einigen Java Bibliotheken, die Sie bei der Implementierung von Integrationsproblemen auf der Java Plattform unterstützen. Was dies 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 " Wann wird Apache Camel verwendet? " beschrieben.

22
Kai Wähner

Was genau ist das

Apache Camel ist ein leichtes Integrationsframework, das alle Enterprise-Integrationsmuster implementiert. Mit den erforderlichen Mustern können Sie problemlos verschiedene Anwendungen integrieren.

Sie können Java, Spring XML, Scala oder Groovy verwenden. Fast jede Technologie, die Sie sich vorstellen können, ist verfügbar, zum Beispiel HTTP, FTP, JMS, EJB, JPA, RMI, JMS, JMX, LDAP, Netty usw.

Schauen Sie sich diese Artikel und EIP-Musterartikel an

Wie interagiert es mit einer in Java geschriebenen Anwendung?

Camel verwendet eine domänenspezifische Java-Sprache oder DSL zum Erstellen von Enterprise-Integrationsmustern oder -Routen in verschiedenen domänenspezifischen Sprachen (DSL) (siehe unten).

Java DSL - Ein auf Java basierendes DSL im flüssigen Builder-Stil.

Die Geschichte von Enterprise Integration Pattern basiert auf folgenden Konzepten:

Nachricht, Endpunkt, Produzent, Konsument, Routing, Bus, Transformieren und Verarbeiten .

Schauen Sie sich das an Artikel Von Anirban Konar für einen der Echtzeitanwendungsfälle.

Passt das zum Server?

Es fungiert als Brücke zwischen mehreren Unternehmenssubsystemen.

Ist es ein eigenständiges Programm?

Apache Camel, ein Integrationsframework, integriert verschiedene unabhängige Anwendungen.

Der Hauptvorteil von Camel : Sie können unterschiedliche Anwendungen mit unterschiedlichen Technologien (und unterschiedlichen Protokollen) integrieren, indem Sie für jede Integration dieselben Konzepte verwenden.

16
Ravindra babu

Die meisten "neuen" Dinge im Computer sind überhaupt nicht wirklich neu, sie sind nur eine mysteriöse Hülle für etwas, das bereits gut verstanden wurde. Wenn sie schwer zu verstehen sind, liegt dies normalerweise daran, dass sich jemand dazu entschlossen hat, neue Sprachbegriffe zu erfinden oder vorhandene Begriffe für einen anderen Zweck zu kolonisieren (ein gutes Beispiel für das ist die Umkehrung des Begriffs "Client" durch die X-Entwickler. und "Server" bedeuten.)

Camel ist ein Java-basierter Wrapper/API für anwendungsübergreifende Middleware.

Middleware ist ein allgemeiner Begriff für Software, die Dolmetschdienste zwischen Entitäten bereitstellt, die keine gemeinsame Sprache oder keinen gemeinsamen Datentyp haben.

Das ist Camel im Grunde. Wir können die Beschreibung konkretisieren, indem wir feststellen, dass sie Middleware vom Typ EIP bereitstellt.

Die Middleware selbst wird nicht bereitgestellt, da sie nicht die Details darüber kennt, was die Anwendungen für die Kommunikation benötigen. Es bietet jedoch die API zum Erstellen der unveränderlichen Teile dieser Middleware (Erstellen eines Startpunkts, Erstellen eines Endpunkts, Erstellen von Bedingungen zum Starten und Beenden usw.).

Ich hoffe, das hilft.

12
MMacD

Hier ist ein weiterer Versuch.

Sie wissen, wie es Dinge wie Webmethods, ICAN Seebeyond, Tibco BW und IBM Broker gibt/gab. Sie alle haben bei Integrationslösungen im Unternehmen geholfen. Diese Tools sind allgemein als EAI-Tools (Enterprise Application Integration) bekannt.

Es gab meistens Drag-Drop-Tools, die auf diesen Technologien basierten, und in Teilen mussten Adapter in Java geschrieben werden. Diese Adaptercodes waren entweder ungetestet oder hatten eine schlechte Werkzeugausstattung/Automatisierung beim Testen.

Genau wie bei Entwurfsmustern in der Programmierung verfügen Sie über Enterprise-Integrationsmuster für gängige Integrationslösungen. Bekannt wurden sie durch ein gleichnamiges Buch von Gregor Hohpe und Bobby Woolf.

Obwohl es durchaus möglich ist, Integrationslösungen zu implementieren, die ein oder mehrere EIPs verwenden, ist Camel ein Versuch, dies in Ihrer Codebasis mit XML, Java, Groovy oder Scala zu tun.

Camel unterstützt alle im Buch aufgeführten Enterprise-Integrationsmuster über seinen umfassenden DSL- und Routing-Mechanismus.

Damit ist Camel eine konkurrierende Technologie zu anderen EAI-Tools mit besserer Unterstützung für das Testen Ihres Integrationscodes. Der Code ist aufgrund der domänenspezifischen Sprachen (Domain Specific Languages, DSLs) kurz gefasst. Es ist auch für Geschäftsanwender lesbar, kostenlos und macht Sie produktiv.

8
skipy

Es gibt viele Frameworks, die uns das Versenden von Nachrichten und das Lösen von Problemen beim Versenden von Nachrichten erleichtern. Ein solches Produkt ist Apache Camel.

Die meisten der häufigsten Probleme haben sich als Entwurfsmuster bezeichnete Lösungen bewährt. Das Entwurfsmuster für Messaging sind EIPs (Enterprise Integration Patterns), die ausführlich erläutert werden hier . Apache Camel hilft uns bei der Implementierung unserer Lösung mithilfe der EIPs.

Die Stärke eines Integrationsframeworks ist seine Fähigkeit, uns durch EIPs oder andere Muster, die Anzahl der Transporte und Komponenten und die einfache Entwicklung, auf der Apache Camel ganz oben auf der Liste steht, zu unterstützen

Jedes Framework hat seine eigenen Vorteile. Einige der Besonderheiten von Apache camel sind die folgenden.

  1. Es bietet die Codierung für viele DSLs, nämlich Java DSL und Spring xml-basiertes DSL, die sehr beliebt sind.
  2. Einfach zu bedienen und einfach zu bedienen.
  3. Fuse IDE ist ein Produkt, mit dessen Hilfe Sie über die Benutzeroberfläche codieren können
7
Naveen Raj

Im Klartext erledigt Camel (viele) Dinge ohne viel Code für Kesselschilder.

Um Ihnen eine Perspektive zu geben, wird mit dem unten angegebenen DSL-Endpunkt Java ein REST erstellt, der in der Lage ist, eine XML-Datei mit einer Produktliste zu akzeptieren, in mehrere Produkte aufzuteilen und aufzurufen Verarbeitungsmethode von BrandProcessor damit. Und nur durch Hinzufügen von .parallelProcessing (beachten Sie den auskommentierten Teil) werden alle Produktobjekte parallel verarbeitet. (Die Produktklasse ist JAXB/XJC-generierter Java-Stub von der XSD, auf die die Eingabe-XML beschränkt ist.) Mit dieser Menge Code (zusammen mit wenigen Camel-Abhängigkeiten) wird die Arbeit erledigt, die früher Hunderte Zeilen dauerte von Java Code.

from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.split(stax(Product.class))
/*.parallelProcessing()*/
.process(itemDeltaProcessor);

Nach dem Hinzufügen der Routen-ID und der Protokollierungsanweisung

from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.routeId("Item-DeltaRESTRoute")
.log(LoggingLevel.INFO, "Item Delta received on Item-DeltaRESTRoute")
.split(stax(Product.class))
.parallelProcessing()
.process(itemDeltaProcessor);

Dies ist nur ein Beispiel. Camel ist viel mehr als nur ein REST Endpunkt. Schauen Sie sich einfach die Liste der steckbaren Komponenten an http://camel.Apache.org/components.html

7
KingJulien

Camel hilft bei der Weiterleitung, Transformation und Überwachung.

Es verwendet Routen; das kann beschrieben werden als:

Wenn der Servicebus eine bestimmte Nachricht empfängt, leitet er diese über keine der Service-/Broker-Ziele wie Warteschlange/Themen weiter. Dieser Pfad wird als Route bezeichnet.

Beispiel: Ihr Aktienantrag wurde von einem Analysten eingegeben, er wird über die Anwendung/Webkomponente verarbeitet und das Ergebnis wird an alle interessierten/registrierten Mitglieder für eine bestimmte Aktienaktualisierung veröffentlicht.

5
sa_nyc

101 Word Intro

Camel ist ein Framework mit einem konsistenten API- und Programmiermodell für die Integration von Anwendungen. Die API basiert auf Theorien in Enterprise Integration Patterns - d. H. Einer Reihe von Entwurfsmustern, die dazu neigen, Messaging zu verwenden. Es bietet sofort einsatzbereite Implementierungen der meisten dieser Muster und wird zusätzlich mit über 200 verschiedenen Komponenten geliefert, mit denen Sie problemlos mit allen Arten anderer Systeme kommunizieren können. Um Camel zu verwenden, schreiben Sie zuerst Ihre Geschäftslogik in POJOs und implementieren Sie einfache Schnittstellen, die sich auf Nachrichten konzentrieren. Verwenden Sie dann Camels DSL, um "Routen" zu erstellen, die Regeln für das Zusammenkleben Ihrer Anwendung darstellen.

Erweitertes Intro

An der Oberfläche ist die Funktionalität von Camel mit traditionellen Enterprise Service Bus-Produkten vergleichbar. Wir denken normalerweise, dass eine Camel Route eine "Vermittlungs" -Komponente (auch als Orchestrierungskomponente bezeichnet) ist, die auf der Serverseite ausgeführt wird. Da es sich jedoch um eine Java - Bibliothek handelt, lässt sie sich leicht einbetten und kann nur auf einer clientseitigen App ausgeführt werden und helfen Ihnen, es mit Punkt-zu-Punkt-Diensten (auch bekannt als Choreografie) zu integrieren. Sie können sogar Ihre POJOs nehmen, die die Nachrichten innerhalb der Kamelroute verarbeiten, und sie einfach in ihre eigenen Remote-Consumer-Prozesse auslagern, z. wenn Sie nur ein Stück unabhängig skalieren mussten. Sie können Camel verwenden, um Routen oder Prozessoren je nach Ihren Anforderungen über eine beliebige Anzahl unterschiedlicher Remote-Transporte/-Protokolle zu verbinden. Benötigen Sie ein äußerst effizientes und schnelles Binärprotokoll oder ein Protokoll, das besser lesbar und einfach zu debuggen ist? Was wäre, wenn Sie wechseln wollten? Mit Camel ist dies in der Regel so einfach wie das Ändern von ein oder zwei Zeilen auf Ihrer Route und nicht das Ändern einer Geschäftslogik. Sie können auch beide unterstützen - Sie können in einem Kamelkontext mehrere Routen gleichzeitig ausführen.

Sie müssen Camel nicht wirklich für einfache Anwendungen verwenden, die in einem einzigen Prozess oder in einer JVM ausgeführt werden sollen - das wäre übertrieben. Aber es ist konzeptionell nicht schwieriger als Code, den Sie selbst schreiben können. Und wenn sich Ihre Anforderungen ändern, erleichtert die Trennung von Geschäftslogik und Klebercode die Wartung im Laufe der Zeit. Sobald Sie die Kamel-API kennen, können Sie sie einfach wie ein Schweizer Taschenmesser verwenden und in vielen verschiedenen Zusammenhängen schnell anwenden, um die Menge an benutzerdefiniertem Code zu reduzieren, die Sie sonst schreiben müssten. Sie können eine Variante lernen - zum Beispiel die Java DSL, eine fließende API, die sich leicht verketten lässt - und die anderen Varianten leicht erlernen.

Insgesamt ist Camel eine gute Wahl, wenn Sie versuchen, Mikrodienstleistungen zu erbringen. Ich fand es für die evolutionäre Architektur von unschätzbarem Wert, da Sie viele der schwierigen, leicht zu fälschenden Entscheidungen in Bezug auf Protokolle, Transporte und andere Systemintegrationsprobleme aufschieben können, bis Sie mehr über Ihre Problemdomäne wissen. Konzentrieren Sie sich einfach auf Ihre EIPs und die Kerngeschäftslogik und wechseln Sie mit den "richtigen" Komponenten zu neuen Routen, wenn Sie mehr erfahren.

4
cwash

Apache Camel ist ein Java Framework für die Enterprise-Integration. ZB: - Wenn Sie eine Webanwendung erstellen, die mit vielen Hersteller-APIs interagiert, können wir das Kamel als externes Integrationstool verwenden. Je nach Anwendungsfall können wir mehr daraus machen. Camel in Action aus Manning-Veröffentlichungen ist ein großartiges Buch zum Erlernen von Camel. Die Integrationen können wie folgt definiert werden.

Java DSL

from("jetty://0.0.0.0:8080/searchProduct").routeId("searchProduct.products").threads()
    .log(LoggingLevel.INFO, "searchProducts request Received with body: ${body}")
    .bean(Processor.class, "createSearchProductsRequest").removeHeaders("CamelHttp*")
    .setHeader(Exchange.HTTP_METHOD, constant(org.Apache.camel.component.http4.HttpMethods.POST))
    .to("http4://" + preLiveBaseAPI + searchProductsUrl + "?apiKey=" + ApiKey
                    + "&bridgeEndpoint=true")
    .bean(Processor.class, "buildResponse").log(LoggingLevel.INFO, "Search products finished");

Hiermit wird lediglich ein REST API-Endpunkt erstellt, der wiederum eine externe API aufruft und die Anforderung zurücksendet

Frühling DSL

<route id="GROUPS-SHOW">
    <from uri="jetty://0.0.0.0:8080/showGroups" />
    <log loggingLevel="INFO" message="Reqeust receviced service to fetch groups -> ${body}" />
    <to uri="direct:auditLog" />
    <process ref="TestProcessor" />
</route>

Kommen Sie auf Ihre Fragen

  1. Was genau ist das Antwort: - Es ist ein Framework, das Enterprise-Integrationsmuster implementiert
  2. Wie interagiert es mit einer in Java geschriebenen Anwendung? Antwort: - Es kann mit allen verfügbaren Protokollen wie http, ftp, amqp usw. Interagieren
  3. Passt das zum Server? Antwort: - Es kann in einem Container wie Tomcat oder unabhängig als Java -Prozess bereitgestellt werden
  4. Ist es ein eigenständiges Programm? Ans: - Es kann sein.

Ich hoffe es hilft

3
Khader M A

Ja, das ist wahrscheinlich etwas spät. Aber eine Sache, die zu den Kommentaren aller anderen hinzugefügt werden muss, ist, dass Camel eigentlich eher eine Toolbox als eine vollständige Sammlung von Funktionen ist. Sie sollten dies bei der Entwicklung berücksichtigen und verschiedene Transformationen und Protokollkonvertierungen durchführen.

Da sich Camel selbst auf andere Frameworks stützt, müssen Sie diese manchmal auch verstehen, um zu verstehen, welches für Ihre Bedürfnisse am besten geeignet ist. Es gibt zum Beispiel mehrere Möglichkeiten, mit REST umzugehen. Dies kann zunächst etwas verwirrend sein, aber sobald Sie mit der Verwendung und dem Testen beginnen, werden Sie sich wohl fühlen und Ihr Wissen über die verschiedenen Konzepte wird zunehmen.

Angenommen, Sie gründen ein E-Commerce-Unternehmen wie Amazon und möchten sich nur auf die Strategie/Auswahl der zu verkaufenden Produkte konzentrieren. Im Gegensatz zur Amazon-Lieferflotte müssen Sie nicht selbst Waren vom Verkäufer ins Lager bringen, sondern Änderungen im Lager vornehmen, z. B. Verpackungen, und diese an andere Städte und Kunden versenden. Sie beauftragen ein Unternehmen, das all dies erledigt, und geben ihm lediglich Informationen zu allen Lagerstandorten, Fahrzeugtypen, Lieferorten und eine Liste der Zeitpunkte, zu denen was zu tun ist. Dann erledigen sie das alleine, das wäre Apache Camel. Sie kümmern sich darum, Dinge von einem Ende zum anderen zu bewegen, sobald Sie ihnen etwas übergeben, sodass Sie sich auf andere Dinge konzentrieren können.

2
Chetan Gowda

Es ist wie eine Verbindungsleitung

From---->To

Dazwischen können beliebig viele Kanäle und Rohre hinzugefügt werden. Der Wasserhahn kann für den Datenfluss und eine Route zur Kanalisierung des Flusses von jedem Typ automatisch oder manuell sein.

Es unterstützt und implementiert für alle Arten und Arten der Verarbeitung. Und für die gleiche Verarbeitung viele Ansätze, da es viele Komponenten hat und jede Komponente auch die gewünschte Ausgabe unter Verwendung verschiedener Methoden bereitstellen kann.

Beispielsweise kann die Dateiübertragung in Kamelen mit verschobenen oder kopierten Dateitypen sowie aus Ordnern, Servern oder Warteschlangen erfolgen.

-from-->To
   - from-->process-->to
   - from-->bean-->to
   - from-->process-->bean-->to
   -from-->marshal-->process-->unmarshal-->to

Vom/zum ---- Ordner, direkt, seda, vm kann alles sein

1

Eine andere Sichtweise (basierend auf grundlegenderen mathematischen Themen)

Die allgemeinste Computerplattform ist eine [ https://en.wikipedia.org/wiki/Turing_machine]

Es liegt ein Problem mit der Turing-Maschine vor. Alle Ein-/Ausgabedaten verbleiben in der Turingmaschine. In der realen Welt gibt es Eingabequellen und Ausgabesenken, die außerhalb unserer Turing-Maschine liegen und im Allgemeinen von Systemen außerhalb unserer Kontrolle gesteuert werden. Das heißt, diese externen Systeme senden/empfangen Daten nach Belieben in einem beliebigen Format mit einem beliebigen gewünschten Datenplaner.

Frage: Wie schaffen wir es, dass unabhängige Turing-Maschinen auf allgemeinste Weise miteinander sprechen, sodass jede Turing-Maschine ihre Kollegen entweder als Quelle von Eingabedaten oder als Senke von Ausgabedaten ansieht?

Antwort: Verwenden Sie etwas wie Kamel, Maultier, BizTalk oder einen anderen ESB, der die Datenverarbeitung zwischen der Fertigstellung bestimmter "physischer" (oder virtueller Software) Turing-Maschinen abstrahiert.

0
earizon