Frage

Ich verstehe nicht genau was Kamel tut.

Wenn Sie in 101 Wörtern eine Einführung in das Kamel geben könnten:

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

Bitte erklären Sie, was Kamel ist.

War es hilfreich?

Lösung

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

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

  • konkrete Implementierungen aller weit verbreiteten Unternehmensintegrationsmuster (EIPs)
  • Konnektivität zu einer Vielzahl von Transporten und APIs
  • Einfach zu verwendende domänenspezifische Sprachen (DSLs), um EIPs zu verdrahten und zusammen zu transportieren

Es gibt auch ein kostenloses Kapitel von Kamel in Aktion Das führt Kamel im ersten Kapitel ein. Jonathan ist Co-Autor in diesem Buch mit mir.

Andere Tipps

Ich mache es, dies auf eine zugänglichere Weise zu beschreiben ...

Um zu verstehen, was Apache Camel ist, müssen Sie verstehen, welche Unternehmensintegrationsmuster sind.

Beginnen wir mit dem, was wir vermutlich bereits wissen: das Singleton -Muster, das Fabrikmuster usw.; Sie sind nur Möglichkeiten, Ihre Lösung für das Problem zu organisieren, aber sie sind selbst keine Lösungen. Diese Muster wurden von der vierköpfigen Bande für den Rest von uns analysiert und extrahiert, als sie ihr Buch veröffentlichten: Designmuster. Sie haben einige von uns enorme Anstrengungen gespart, um darüber nachzudenken, wie wir unseren Code am besten strukturieren können.

Ähnlich wie die vierköpfige Bande haben Gregor Hohpe und Bobby Woolf das Buch verfasst Unternehmensintegrationsmuster (EIP), in dem sie eine Reihe neuer Muster vorschlagen und dokumentieren und Blaupausen denn wie wir könnten Beste Entwerfen Sie große Komponenten-basierte Systeme, bei denen Komponenten auf demselben Prozess oder in einer anderen Maschine ausgeführt werden können.

Sie schlagen im Grunde vor, dass wir unser System strukturieren Botschaft Orientiert - wo Komponenten miteinander kommunizieren, indem sie Nachrichten als Eingaben und Ausgaben verwenden und absolut nichts anderes. Sie zeigen uns einen vollständigen Satz von Mustern, aus denen wir in unseren verschiedenen Komponenten auswählen und implementieren können, die zusammen das gesamte 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 möchten, um den EIPs zu folgen.

MVC nehmen. MVC ist theoretisch ziemlich einfach und wir könnten es ohne Rahmenhilfe implementieren. Aber gute MVC-Frameworks bieten uns die Struktur, die wirsatzbereit sind und die Extrameile gegangen sind und alle anderen "Seite" -Dinge, die Sie benötigen, 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ändiger produktionsbereiteter Rahmen für Personen, die ihre Lösung implementieren möchten, um den EIPs zu folgen.

Ein ... Erstellen Projektbeschreibung sollte nicht kompliziert sein.

Ich sage:

Apache Camel ist Messaging -Technologiekleber mit Routing. Es verbindet Messaging -Start- und Endpunkte, die die Übertragung von Nachrichten aus verschiedenen Quellen auf verschiedene Ziele ermöglichen. Zum Beispiel: JMS -> JSON, HTTP -> JMS oder Trichter FTP -> JMS, HTTP -> JMS, JSON -> JMS

Wikipedia sagt:

Apache Camel ist eine regelbasierte Routing- und Mediations-Engine, die eine Java-Objektbasis der Implementierung der Unternehmensintegrationsmuster mithilfe einer API (oder deklarativen Java-Domänenspezifische Sprache) zur Konfiguration von Routing- und Mediationsregeln bietet. Die domänenspezifische Sprache bedeutet, dass Apache Camel den Typ-saften Smart-Abschluss von Routing-Regeln in Ihrer IDE mit dem regulären Java-Code ohne große Mengen an XML-Konfigurationsdateien unterstützen kann. Obwohl auch die XML -Konfiguration innerhalb der Feder unterstützt wird.

Sehen? Das war nicht schwer, oder?

Zusamenfassend:

Wenn es erforderlich ist, Systeme zu verbinden / zu integrieren, müssen Sie wahrscheinlich eine Verbindung zu einer Datenquelle herstellen und diese Daten dann so verarbeiten, um Ihre Geschäftsanforderungen zu entsprechen.

Um das zu tun:

1) Sie können ein individuelles Programm entwickeln, das dies tun würde (möglicherweise zeitaufwändig und schwer zu verstehen, für andere Entwickler aufrechtzuerhalten).

2) Alternativ können Sie Apache Camel verwenden, um dies auf standardisierte Weise zu tun (es wird die meisten bereits für Sie entwickelten Anschlüsse entwickelt. Sie müssen sie nur einrichten und Ihre Logik anschließen - als Prozess als Prozess):

Kamel hilft Ihnen zu:

  1. Konsumieren Sie Daten aus jeder Quelle/einem beliebigen Format
  2. Verarbeiten Sie diese Daten
  3. Daten in jeder Quelle/einem beliebigen Format ausgeben

Durch die Verwendung von Apache Camel können Sie Ihr System leicht verstehen / warten / erweitern.

Apache Camel wird mit Unternehmensintegrationsmustern entwickelt. Die Muster helfen Ihnen, Systeme auf gute Weise zu integrieren :-)

Kamel sendet Nachrichten von A nach B:

enter image description here

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

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

Also brauchst du jetzt:

  • Übersetzen zwischen Protokollen
  • Kleber Komponenten zusammen
  • Routen definieren - Was geht wohin
  • Filter Einige Dinge in einigen Fällen

Kamel gibt Ihnen das oben genannte (und mehr) aus der Box:

enter image description here

Mit einer coolen DSL -Sprache, damit Sie das was und wie: 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 Dies und Dies und Kamel in Aktion (wie andere gesagt haben, ein ausgezeichnetes Buch!)

Ein Diagramm ist besser als Tausende von Beschreibung. Dieses Diagramm zeigt die Architektur von Kamel.

enter image description here

Basierend auf Analogie

Das Routing auf Kamelbasis kann viel leicht verstanden werden, indem Sie sich in die Schuhe eines Fluggesellschaften (z. B.: American Airlines, Jet Airways) setzen.

Der Zweck von "Ihre Fluggesellschaft" ist es, "Passagiere" von einer "Stadt" zu einem anderen auf der Welt zu "tragen". Sie verwenden Flugzeuge aus verschiedenen "Flugzeugfirmen" wie Boeing, Airbus, Hal für den Tragen von Passagieren.

Die Passagiere Ihrer Fluggesellschaft, die "Flughäfen" der Stadt nutzen, und sie nutzen sie mit dem Flughafen der Stadt. Ein Passagier kann in mehrere Städte reisen, aber überall müssen er durch den Flughafen gehen, um zwischen dem Flugzeug Ihrer Fluggesellschaft und der Stadt zu reisen.

Beachten Sie, dass ein Passagier, der aus der Stadt abreiste, im Wesentlichen "in das Flugzeug der Fluggesellschaften ankommt". Und ein Passeger, der in die Stadt ankommt, verlässt im Wesentlichen vom Flugzeug. Da wir uns in den Schuhen des Fluggesellschaften befinden, werden der Begriff "Ankunftspassagier" und "abfahrender Passagier" aus unseren konventionellen Vorstellungen, die auf Städten Perspektive basieren, rückgängig gemacht.

Die gleiche Infrastruktur "Flughafen" jeder Stadt wird von "Abfahrt" -Passagiere und "Ankunft" -Passagiere verwendet. Ein Flughafen bietet "Abfluginfrastruktur" für die Abfahrt Passagiere, die sich von der Ankunftsinfrastruktur unterscheidet, die für ankommende Passagiere vorgesehen ist.

Passagiere können ihren Tag weiterhin für ihre Aktivitäten durchführen, da verschiedene „Annehmlichkeiten“ im Flugzeug Ihrer Fluggesellschaften auf Reisen bereitgestellt werden.

Darüber hinaus bietet Ihre Fluggesellschaft auch Lounge -Einrichtungen für spezielle Behandlungen wie „Verständnis der lokalen Sprache“ und oder Sie auf die „Reise“ vorbereitet.

Ersetzen wir einige Wörter/Phrasen, die oben verwendet werden, durch folgende:

Ihre Fluggesellschaft: Apache Camel

Flugzeugunternehmen: Transportmechanismen

Das Flugzeug Ihrer Fluggesellschaft: Apache Camels zugrunde liegender Transportmechanismus

Tragen: Route

Passagiere: Nachricht;

Stadt: System;

Flughafen: Kamelkomponente;

Lokalsprachen verstehen: Typ Conversions;

Abfahrt: produzieren, produziert

Ankunft: Verbrauch, konsumiert

Reisen: Routed

Annehmlichkeiten: Vorausgesetzt

Nachdem Sie die Wörter ersetzt haben, erhalten Sie hier:

Zweck von 'Apache Camel' soll 'Nachrichten' von einem 'System' an einen anderen auf der Welt weiterleiten. Apache Camel verwendet unterschiedliche Transportmechanismen für das Nachrichtenrouting.

Apache Camel nimmt Nachrichten mithilfe von 'Camel -basierter Komponente' des 'vom' System 'auf und lässt sie mit der' Camel -basierten Komponente 'des' bis 'Systems fallen. Eine Nachricht kann zu mehreren Systemen übergehen, aber überall müssen sie "Kamelbasis" -Komponenten durchgehen, um zwischen den zugrunde liegenden Transportmechanismus von Apache Camel zu wandern.

Beachten Sie, dass eine aus dem System "produzierte" Nachricht im Wesentlichen "in Apache Camels zugrunde liegende Transportmechanismus" konsumiert wird. Und eine von einem System konsumierte Nachricht wird im Wesentlichen durch den zugrunde liegenden Transportmechanismus des Apache Camel erzeugt.

Da wir versuchen, Camel zu verstehen, müssen wir hier ab Camels Sicht nachdenken. Die Bedeutung der Begriffe "Verbraucherbotschaft" und "Produzentennachricht" ist daher von unseren konventionellen Vorstellungen umgekehrt, die auf der Perspektive eines Systems beruhen.

Die 'Codierungsinfrastruktur der Kamelbasis -Komponente wird von der "Produzentennachricht" und "Verbrauchernachricht" verwendet. Eine 'Camel -basierte Komponente' bietet einen "Produzentenendpunkt" für "Produzentennachricht" und einen "Verbraucherendpunkt" für "Verbrauchernachricht".

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

Darüber hinaus bietet Camel besondere Funktionen wie "Typ Conversion" und vieles mehr ...

Eines der Dinge, die Sie verstehen müssen, bevor Sie versuchen, Apache Camel zu verstehen, sind Unternehmensintegrationsmuster. Nicht jeder auf diesem Gebiet ist sich ihrer tatsächlich bewusst. Während Sie das Buch für Enterprise -Integrationsmuster sicherlich lesen können, besteht ein schnellerer Weg, um sie auf dem neuesten Stand zu machen, so etwas wie den Wikipedia -Artikel über Enterprise Application Integration.

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

HTH

Wenn Sie sich über Unternehmensintegrationsmuster bewusst sind, 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 in verschiedene Protokolle und Technologien integrieren müssen, können Sie Camel verwenden.

Eine Definition aus einer anderen Perspektive:

Apache Camel ist ein Integrationsrahmen. Es besteht aus einigen Java -Bibliotheken, mit denen Sie Integrationsprobleme auf der Java -Plattform implementieren können. Was dies bedeutet und wie es sich von APIs einer Seite und einem Enterprise Service Bus (ESB) auf der anderen Seite unterscheidet, wird in meinem Artikel beschrieben. "Wann kann Apache Camel verwendet werden".

Was genau ist es?

Apache Kamel ist ein leichtes Integrationsrahmen, das alle Unternehmensintegrationsmuster implementiert. Sie können verschiedene Anwendungen mit den erforderlichen Mustern problemlos integrieren.

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

Schau dir das an Artikel und EIP -Musterartikel

Wie interagiert es mit einer in Java geschriebenen Anwendung?

Kamel verwendet a Java Domain Spezifische Sprache oder DSL zum Erstellen von Unternehmensintegrationsmustern oder -routen in einer Vielzahl von domänenspezifischen Sprachen (DSL), wie unten aufgeführt.

Java dsl - Ein Java -basiertes DSL mit dem fließenden Builder -Stil.

Die Geschichte des Unternehmens -Integrationsmusters löst sich in diesen Konzepten auf:

Nachricht, Endpunkt, Produzent, Verbraucher, Routing, Bus, Transformation und Prozess.

Schau dir das an Artikel Von Anirban Konar für einen von Anwendungsfällen in Echtzeit.

Ist es etwas, das mit dem Server zusammenkommt?

Es fungiert als Brücke über mehrere Unternehmens -Sub -Systeme.

Ist es ein unabhängiges Programm?

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

Der Hauptvorteil von Kamel : Sie können verschiedene Anwendungen in verschiedene Technologien (und verschiedene Protokolle) integrieren, indem Sie für jede Integration gleiche Konzepte verwenden.

Die meisten "neuen" Dinge im Computer sind überhaupt nicht wirklich neu, sie sind nur eine mystifizierende Wrapper um etwas, das bereits gut verstanden. Wenn sie schwer zu verstehen sind, liegt dies normalerweise daran das ist die Umkehrung der X -Entwickler, was "Client" und "Server" bedeuten.)

Camel ist eine Java-basierte Wrapper/API für Middleware Inter-Application.

Middleware ist ein allgemeiner Begriff für Software, der Interpretationsdienste zwischen Entitäten bereitstellt, die keine gemeinsame Sprache oder Datentypen teilen.

Das ist, was Kamel unten ist. Wir können die Beschreibung ausmachten, indem wir feststellen, dass sie für die Middleware vom Typ EIP-Typ bereitgestellt wird.

Es liefert nicht die Middleware selbst, da es nicht wissen kann, was die Anwendungen kommunizieren müssen. Es bietet jedoch die API zum Erstellen der invarianten Teile dieser Middleware (erstellen Sie einen Startpunkt, erstellen Sie einen Endpunkt, erstellen Sie Bedingungen für das Starten und Ende usw.).

Ich hoffe, das hilft.

Hier ist ein weiterer Versuch, es zu tun.

Sie wissen, wie es Dinge wie WebMethods, Ican Seebeyond, Tibco BW und IBM Broker gibt. Sie alle haben bei Integrationslösungen im Unternehmen geholfen. Diese Tools sind allgemein unter den Tools des Namens Enterprise Application Integration (EAI) bekannt.

Um diese Technologien und in Teilen mussten Sie Adapter in Java schreiben. Dieser Adaptercode war entweder ungetestet oder hatte eine schlechte Werkzeuge/Automatisierung bei Tests.

Genau wie bei Designmustern in der Programmierung verfügen Sie über Unternehmensintegrationsmuster für gemeinsame Integrationslösungen. Sie wurden durch ein gleichnamiges Buch von Gregor Hohpe und Bobby Woolf berühmt.

Obwohl es durchaus möglich ist, Integrationslösungen zu implementieren, die einen oder viele EIP verwenden, ist Camel ein Versuch, dies in Ihrer Codebasis mit einem von XML, Java, Groovy oder Scala auszuführen.

Camel unterstützt alle im Buch aufgeführten Unternehmensintegrationsmuster über den reichen DSL- und Routing -Mechanismus.

Daher ist Camel ein konkurrierender Technoloy für andere EAI -Tools mit besserer Unterstützung für das Testen Ihres Integrationscode. Der Code ist aufgrund der domänenspezifischen Sprachen (DSLs) präzise. Es ist auch von Geschäftsnutzern lesbar und ist kostenlos und macht Sie produktiv.

Es gibt viele Frameworks, die uns für das Nachrichtennachrichten und die Lösung von Problemen in der Nachrichten erleichtert werden. Ein solches Produkt ist Apache Camel.

Die meisten häufigen Probleme haben nachgewiesene Lösungen, die als Konstruktionsmuster bezeichnet werden. Das Entwurfsmuster für Messaging sind Enterprise Integrationsmuster (EIPs), die gut erklärt werden hier. Apache Camel helfen uns, unsere Lösung mit den EIPs zu implementieren.

Die Stärke eines Integrationsrahmens ist seine Fähigkeit, uns durch EIPs oder andere Muster, die Anzahl der Transporten und Komponenten sowie die einfache Entwicklung zu erleichtern, auf der Apache Camel ganz oben auf der Liste steht

Jedes der Frameworks hat seine eigenen Vorteile einige der besonderen Merkmale von Apache Camel sind die folgenden.

  1. Es bietet die Codierung für viele DSLs, nämlich Java DSL und Spring XML -basierte DSL, die beliebt sind.
  2. Einfache Verwendung und einfach zu bedienen.
  3. Fuse IDE ist ein Produkt, das Ihnen hilft, über UI zu codieren

Im klaren Englisch bekommt Camel (viele) Dinge ohne einen Großteil des Kesselplattencodes.

Um Ihnen eine Perspektive zu geben, erzeugt die unten angegebene Java -DSL einen REST -Endpunkt, der in der Lage ist, eine XML zu akzeptieren, die aus der Liste von Produkten besteht und sie in mehrere Produkte aufteilt und die Prozessmethode von BrandProcessor damit aufgerichtet hat. Und nur durch Hinzufügen von .Parallelprozessierung (beachten Sie den kommentierten Teil), es wird parallel alle Produktobjekte verarbeiten. (Die Produktklasse ist JAXB/XJC -Generierter Java -Stub aus dem XSD, auf den die Eingabe XML beschränkt ist.) Dieser Code (zusammen mit wenigen Kamelabhängigkeiten) wird die Aufgabe erledigen, die früher 100 -jährige Zeilen von Java -Code angenommen hat.

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

Nach dem Hinzufügen der Anweisung Routen -ID und Protokollierung

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, Kamel ist viel mehr als nur RELE -Endpunkt. Schauen Sie sich einfach die steckbare Komponentenliste an http://camel.apache.org/components.html

Kamel hilft bei Routing, Transformation, Überwachung.

Es verwendet Routen; was beschrieben werden kann als:

Wenn der Dienstbus eine bestimmte Nachricht erhält, wird sie über No of Services/Broker -Ziele wie Warteschlangen/Themen übertragen. Dieser Weg ist als Route bekannt.

Beispiel:Ihre Aktienanwendung hat einige Eingaben von Analyst, sie wird über die Anwendung/Webkomponente verarbeitet und dann wird das Ergebnis an alle interessierten/registrierten Mitglieder für bestimmte Aktualisierungen veröffentlicht.

101 Wort Intro

Camel ist ein Framework mit einem konsistenten API- und Programmiermodell für die gemeinsame Integration von Anwendungen. Die API basiert auf Theorien in Unternehmensintegrationsmuster - dh ein Haufen Designmuster, die dazu neigen, Nachrichten zu verwenden. Es liefert die Implementierungen der meisten dieser Muster außerhalb der Box und versendet zusätzlich mehr als 200 verschiedene Komponenten Sie können einfach mit allen möglichen anderen Systemen sprechen. Um Camel zu verwenden, schreiben Sie zuerst Ihre Geschäftslogik in Pojos und implementieren Sie einfache Schnittstellen, die sich um Nachrichten konzentrieren. Verwenden Sie dann Camels DSL, um "Routen" zu erstellen, bei denen es sich um Regeln handelt, um Ihre Anwendung zusammenzukleben.

Erweitertes Intro

An der Oberfläche konkurriert die Funktionalität von Camel mit den traditionellen Unternehmensbussprodukten für Enterprise Service. Wir denken normalerweise an eine Kamelroute, die eine "Mediation" (auch bekannt als Orchestrierungskomponente) ist, die auf der Serverseite lebt. Da es sich jedoch um eine Java -Bibliothek handelt Es mit Punkt zu Punktdiensten (auch bekannt als Choreografie). Sie können sogar Ihre Pojos nehmen, die die Nachrichten in der Kamelroute verarbeiten und sie problemlos in ihre eigenen Remote -Verbraucherprozesse eindrehen, z. B. 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 verschiedener Ferntransport/Protokolle zu verbinden. Benötigen Sie ein äußerst effizientes und schnelles binäres Protokoll oder eines, das menschlicher lesbar und leicht zu debuggen kann? Was ist, wenn Sie wechseln wollten? Mit Kamel ist dies normalerweise so einfach wie das Ändern eines oder zwei Zeilen in Ihrer Route und überhaupt keine Geschäftslogik. Oder Sie können beide unterstützen - Sie können viele Routen gleichzeitig in einem Kamelkontext ausführen.

Sie müssen Camel nicht wirklich für einfache Anwendungen verwenden, die in einem einzigen Prozess oder JVM leben - es 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 der Geschäftslogik und des Klebercodes die Wartung im Laufe der Zeit. Sobald Sie die Camel-API gelernt haben, ist es einfach, sie wie ein Schweizer-Army-Messer zu verwenden und sie schnell in vielen verschiedenen Kontexten anzuwenden, um die Menge an benutzerdefinierten Code zu verringern, die Sie sonst schreiben müssen. Sie können einen Geschmack lernen - die Java -DSL, zum Beispiel eine fließende API, die leicht zu ketten ist - und die anderen Aromen leicht aufzunehmen.

Insgesamt passt das Kamel gut, wenn Sie versuchen, Microservices zu machen. Ich habe es für die evolutionäre Architektur von unschätzbarem Wert gefunden, weil Sie viele schwierige, leicht zu wegorische Entscheidungen über Protokolle, Transporte und andere Systemintegrationsprobleme abschließen können, bis Sie mehr über Ihre Problemdomäne erfahren. Konzentrieren Sie sich einfach auf Ihre EIPS- und Kerngeschäftslogik und wechseln Sie mit den "richtigen" Komponenten auf neue Routen, während Sie mehr erfahren.

Ja, das ist wahrscheinlich etwas spät. Eine Sache, die die Kommentare aller anderen hinzufügen sollten, ist, dass Camel tatsächlich eine Toolbox ist und nicht eine vollständige Funktion. Sie sollten dies bei der Entwicklung berücksichtigen und verschiedene Transformationen und Protokollumwandlungen durchführen.

Camel selbst stützt sich auf andere Frameworks, und daher müssen Sie manchmal auch diese verstehen, um zu verstehen, welche für Ihre Bedürfnisse am besten geeignet sind. Es gibt zum Beispiel mehrere Möglichkeiten, um Ruhe zu bewältigen. Dies kann zunächst etwas verwirrend werden, aber wenn Sie mit dem Einsatz und Testen beginnen, werden Sie sich wohl fühlen und Ihr Wissen über die verschiedenen Konzepte wird zunehmen.

Apache Camel ist ein Java -Framework für die Unternehmensintegration. ZB:- Wenn Sie eine Webanwendung erstellen, die mit vielen Anbieter-APIs interagiert, können wir das Kamel als externes Integrationstool verwenden. Auf der Grundlage des Anwendungsfalles können wir mehr damit tun. Kamel in Aktion von Manning Publications ist ein großartiges Buch für das Lernen von Kamel. Die Integrationen können wie unten 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");

Hier

Spring 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>

Zu Ihren Fragen kommen

  1. Was genau ist es? ANS:- Es ist ein Framework, das Unternehmensintegrationsmuster implementiert
  2. Wie interagiert es mit einer in Java geschriebenen Anwendung? ANS:- Es kann mit allen verfügbaren Protokollen wie HTTP, FTP, AMQP usw. interagieren.
  3. Ist es etwas, das mit dem Server zusammenkommt? ANS:- Es kann in einem Behälter wie Tomcat bereitgestellt werden oder unabhängig als Java-Prozess eingesetzt werden
  4. Ist es ein unabhängiges Programm? Ans:- Es kann sein.

Ich hoffe es hilft

Nehmen wir an, Sie erstellen ein E -Commerce -Unternehmen wie Amazon und möchten sich nur auf die Strategie/Auswahl der Produkte konzentrieren, um sie zu verkaufen. Im Gegensatz zu Amazon Delivery -Flotte bearbeiten Sie sich anstatt sich selbst zu bewegen, die Waren von Verkäufern in das Lager zu bewegen, wodurch sich Änderungen daran in Lager wie Verpackung vornehmen und sie an andere Stadt und Kunden senden. Sie beauftragen ein Unternehmen, das all dies tut, und geben ihnen nur Informationen über alle Ihre Lagerstandorte, Fahrzeugtypen, Lieferorte und eine Liste der zu tun, wann was zu tun ist. Dann kümmern sie sich alleine, das wäre Apache Camel. Sie kümmern sich darum, die Dinge von einem Ende zu einem anderen zu bewegen, sobald Sie Sachen an sie übergeben, damit Sie sich frei auf andere Dinge konzentrieren können.

Es ist wie eine Pipeline, die eine Verbindung herstellt

From---->To

Dazwischen können Sie so viele Kanäle und Rohre hinzufügen. Der Wasserhahn kann für den Datenfluss und eine Route zum Kanalisierung des Flusses automatisch oder manuell sein.

Es unterstützt und verfügt über eine Implementierung 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 darstellt.

Beispielsweise kann die Dateiübertragung in Camel mit der Datei mit dem Verschieben oder kopierten Typen sowie von Ordner, Server oder Warteschlange durchgeführt werden.

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

Von/bis ---- Ordner, direkt, seda, VM kann alles sein

Ein weiterer Standpunkt (basierend auf grundlegenden mathematischen Themen)

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

Es gibt ein Problem mit der Turing -Maschine. Alle Eingangs-/Ausgabedaten bleiben im Turing -Maschine. In der realen Welt gibt es Eingangsquellen und Ausgangssenke außerhalb unserer Turing -Maschine und im Allgemeinen von Systemen außerhalb unserer Kontrolle. Das heißt, diese externen Systeme senden Daten nach Belieben in jedem Format mit jedem gewünschten Datenschildanschluss.

Frage: Wie schaffen wir es, unabhängige Turing-Maschinen auf die Generalmaschine zu sprechen, damit jede Turing-Maschine ihre Kollegen entweder als Quelle für Eingabedaten oder eine Ausgangs-Datenversuche sieht?

Antwort: Verwenden Sie so etwas wie Kamel, Maultier, BizTalk oder eine andere ESB, die den Datenumschlag zwischen der Vervollständigung verschiedener "physischer" (oder virtueller Software-) Turing -Maschinen abstrahieren.

Apache Camel ist ein leichtes Integrationsrahmen, das alle Unternehmensintegrationsmuster implementiert. Sie können verschiedene Anwendungen problemlos mit den erforderlichen Mustern integrieren. Sie können Java, Spring XML, Scala oder Groovy verwenden.

Apache Camel läuft auf der Java Virtual Machine (JVM). ... Die Kernfunktionalität von Apache Camel ist die Routing -Engine. Es weist Nachrichten basierend auf den zugehörigen Routen zu. Eine Route enthält Fluss- und Integrationslogik. Es wird mit EIPS und einem bestimmten DSL implementiert.

enter image description here

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top