Question Qu'est-ce que c'est exactement Apache Camel?


Je ne comprends pas exactement chameau Est-ce que.

Si vous pouviez donner en 101 mots une introduction à Camel:

  • Qu'est-ce que c'est exactement?
  • Comment interagit-il avec une application écrite en Java?
  • Est-ce quelque chose qui va de pair avec le serveur?
  • Est-ce un programme indépendant?

S'il vous plaît expliquer ce qu'est Camel.


1137
2018-01-13 02:32


origine


Réponses:


Si vous avez 5 à 10 minutes, je recommande généralement aux gens de lire ceci Intégration avec Apache Camel par Jonathan Anstey. C'est un morceau bien écrit qui donne une brève introduction et une vue d'ensemble de certains des concepts de Camel, et il implémente un cas d'utilisation avec des exemples de code. Jonathan y écrit:

Apache Camel est un framework Java open source qui vise à rendre l'intégration plus facile et plus accessible aux développeurs. Il le fait en fournissant:

  • mises en œuvre concrètes de tous les largement utilisés Modèles d'intégration d'entreprise (EIPs)
  • connectivité à une grande variété de transports et d'API
  • des langages spécifiques au domaine (DSL) faciles à utiliser pour câbler les EIP et les transports en commun

Il y a aussi un chapitre gratuit de Chameau en action qui introduit Camel dans le premier chapitre. Jonathan est co-auteur de ce livre avec moi.


596
2018-01-13 10:49



Ma prise pour décrire cela d'une manière plus accessible ...

Afin de comprendre ce qu'est Apache Camel, vous devez comprendre ce que sont les patterns d'intégration d'entreprise.

Commençons par ce que nous savons déjà: le motif Singleton, le motif Factory, etc; Ils sont simplement des moyens d'organiser votre solution au problème, mais ils ne sont pas eux-mêmes des solutions. Ces modèles ont été analysés et extraits pour le reste d'entre nous par le Gang of Four, quand ils ont publié leur livre: Modèles de conception. Ils ont sauvé certains d'entre nous d'énormes efforts pour réfléchir à la meilleure façon de structurer notre code.

Tout comme le Gang of Four, Gregor Hohpe et Bobby Woolf ont écrit le livre Modèles d'intégration d'entreprise (EIP) dans lequel ils proposent et documentent un ensemble de nouveaux modèles et bleus pour comment nous pourrions meilleur concevoir de grands systèmes basés sur des composants, où les composants peuvent être exécutés sur le même processus ou sur une machine différente.

Ils proposent essentiellement que nous structurons notre système pour être message orienté - où les composants communiquent entre eux en utilisant des messages comme des entrées et des sorties et absolument rien d'autre. Ils nous montrent un ensemble complet de modèles que nous pouvons choisir et mettre en œuvre dans nos différents composants qui formeront ensemble le système entier.

Alors, qu'est-ce que Apache Camel?

Apache Camel vous offre les interfaces pour les EIP, les objets de base, les implémentations généralement nécessaires, les outils de débogage, un système de configuration et beaucoup d'autres aides qui vous feront gagner du temps lorsque vous souhaitez implémenter votre solution pour suivre les EIP.

Prenez MVC. MVC est assez simple en théorie et nous pourrions l'implémenter sans aucune aide-cadre. Mais de bons frameworks MVC nous fournissent la structure prête à l'emploi et ont fait un effort supplémentaire et ont pensé à toutes les autres choses dont vous avez besoin lorsque vous créez un grand projet MVC et c'est pourquoi nous les utilisons la plupart du temps.

C'est exactement ce qu'Apache Camel est pour les EIP. C'est un cadre complet prêt pour la production pour les personnes qui souhaitent mettre en œuvre leur solution pour suivre les EIP.


929
2017-07-18 11:38



Créer un Description du projet ne devrait pas être compliqué.

Je dis:

Apache Camel est la technologie de messagerie qui colle avec le routage. Il regroupe les points de début et de fin de la messagerie permettant le transfert de messages de différentes sources vers différentes destinations. Par exemple: JMS -> JSON, HTTP -> JMS ou FTP de canalisation -> JMS, HTTP -> JMS, JSON -> JMS

Wikipedia dit:

Apache Camel est un moteur de routage et de médiation basé sur des règles qui fournit une implémentation basée sur les objets Java des Enterprise Integration Patterns en utilisant une API (ou Java Domain Specific Language) pour configurer les règles de routage et de médiation. Le langage spécifique à un domaine signifie qu'Apache Camel peut prendre en charge la complétion intelligente des règles de routage dans votre EDI en utilisant le code Java normal sans avoir besoin d'énormes quantités de fichiers de configuration XML; Cependant, la configuration XML à l'intérieur de Spring est également prise en charge.

Voir? Ce n'était pas difficile était-ce?


636
2018-05-31 15:37



En bref:

Lorsque vous devez vous connecter / intégrer des systèmes, vous devrez probablement vous connecter à une source de données, puis traiter ces données pour répondre aux besoins de votre entreprise.

Pour pouvoir faire ça:

1) Vous pourriez développer un programme personnalisé qui le ferait (peut prendre du temps et difficile à comprendre, maintenir pour d'autres développeurs)

2) Vous pouvez également utiliser Apache Camel de manière standardisée (la plupart des connecteurs sont déjà développés pour vous, il suffit de le configurer et de brancher votre logique - Process):

Camel vous aidera à:

  1. Consommer des données de n'importe quelle source / format
  2. Traiter ces données
  3. Sortie de données vers n'importe quelle source / format

En utilisant Apache Camel, vous pourrez facilement comprendre / maintenir / étendre votre système à un autre développeur.

Apache Camel est développé avec Enterprise Integration Patterns. Les modèles vous aident à intégrer les systèmes dans le bon sens :-)


106
2018-06-04 20:48



Un diagramme vaut mieux que des milliers de descriptions. Ce diagramme illustre l'architecture de Camel.

enter image description here


66
2017-12-27 02:48



Camel envoie des messages de A à B:

enter image description here

Pourquoi un cadre entier pour cela? Eh bien, que faire si vous avez:

  • de nombreux expéditeurs et de nombreux récepteurs
  • une douzaine de protocoles (ftp, http, jms, etc.)
  • de nombreuses règles complexes
    • Envoyer un message A aux destinataires A et B uniquement
    • Envoyer un message B au destinataire C en XML, mais en partie Traduire il, enrichir il (ajouter des métadonnées) et IF condition X, puis envoyez-le au récepteur D, mais comme CSV.

Alors maintenant vous avez besoin de:

  • Traduire entre les protocoles
  • la colle composants ensemble
  • définir des itinéraires - ce qui se passe où
  • filtre certaines choses dans certains cas

Camel vous donne ce qui précède (et plus) hors de la boîte:

enter image description here

avec un langage DSL cool pour vous de définir le quoi et comment:

  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");
}

Voir également ce et ce et Camel in Action (comme d'autres l'ont dit, un excellent livre!)


54
2018-04-28 17:53



Une des choses que vous devez comprendre, avant d'essayer de comprendre Apache Camel, est Enterprise Integration Patterns. Pas tout le monde dans le domaine est réellement au courant d'eux. Bien que vous puissiez certainement lire le livre Enterprise Integration Patterns, un moyen plus rapide d'y accéder serait de lire quelque chose comme l'article de Wikipedia sur Intégration d'applications d'entreprise.

Celui que vous avez lu et compris le sujet, vous seriez beaucoup plus susceptible de comprendre le but de Apache Camel

HTH


45
2018-01-13 03:36



BASÉ SUR L'ANALOGIE

Le routage à base de chameaux peut être compris facilement en se mettant dans la peau d'un propriétaire de compagnie aérienne (par exemple: American Airlines, Jet Airways).

Le but de «votre compagnie aérienne» est de «transporter» des passagers d'une «ville» à une autre dans le monde. Vous utilisez des avions de différentes compagnies aéronautiques comme Boeing, Airbus, HAL pour transporter des passagers.

Les passagers de votre compagnie aérienne utilisent les 'aéroports' de la ville et les déporte en utilisant l'aéroport de la ville. Un passager peut «voyager» dans plusieurs villes, mais partout il doit passer par l'aéroport pour voyager entre l'avion de votre compagnie aérienne et la ville.

Notez qu'un passager «partant» de la ville «arrive» essentiellement dans l'avion de votre compagnie aérienne. Et un passeur 'arrivant' dans la ville, quitte essentiellement l'avion. Puisque nous sommes dans la peau du propriétaire d'une compagnie aérienne, les termes «passager d'arrivée» et «passager au départ» sont inversés par rapport à nos notions conventionnelles qui sont basées sur la perspective des villes.

La même infrastructure «aéroport» de chaque ville est utilisée par les passagers «au départ» et les passagers «d'arrivée». Un aéroport fournit une «infrastructure de départ» aux passagers au départ, ce qui est différent de l'infrastructure d'arrivée prévue pour les passagers à l'arrivée.

Les passagers peuvent continuer à faire leur journée à leurs activités en raison de diverses «commodités» fournies à l'intérieur de l'avion par vos compagnies aériennes, tout en voyageant.

En plus de cela, votre compagnie aérienne fournit également des installations de salon pour des traitements spéciaux comme «comprendre la langue locale» et vous préparer pour le «voyage».

Permet de remplacer quelques mots / phrases utilisés ci-dessus avec les éléments suivants:

votre compagnie aérienne: Apache Camel

compagnies aériennes: Mécanismes de transport

l'avion de votre compagnie aérienne: le mécanisme de transport sous-jacent d'Apache Camel

transporter: route

passagers: message;

ville: système;

aéroport: Camel Component;

comprendre les langues locales: conversions de type;

départ: producteur, produit

arriver: consommer, consommé

Voyage: routé

équipements: fournis

Après avoir remplacé les mots, voici ce que vous obtenez:

But de 'Apache Camel' est d'acheminer les «messages» d'un «système» à un autre dans le monde. Apache camel utilise différents mécanismes de transport pour le routage des messages.

Apache Camel récupère les messages en utilisant 'Composant Camel' du système 'from' et les supprime en utilisant le 'Composant Camel' du système 'to'. Un message peut être acheminé vers plusieurs systèmes, mais partout ils doivent passer par des 'Composants basés sur Camel' pour se déplacer entre le 'mécanisme de transport sous-jacent' d'Apache Camel et le système.

Notez qu'un message «produit» du système est essentiellement «consommé» dans le mécanisme de transport sous-jacent d'Apache Camel ». Et un message consommé par un système est essentiellement produit par le mécanisme de transport sous-jacent d'Apache Camel.

Puisque nous essayons de comprendre Camel, nous devons penser à partir de la perspective de Camel ici. La signification des termes «message du consommateur» et «message du producteur» est donc inversée par rapport à nos notions conventionnelles qui sont basées sur la perspective d'un système.

La même infrastructure de codage «Camel based Component» est utilisée par «message du producteur» et «message du consommateur». Un 'Composant basé sur Camel' fournit un 'point final producteur' pour 'message de producteur' et un 'point de terminaison consommateur' pour 'message de consommateur'.

Les messages peuvent être traités par Camel lors de leur routage.

En plus de ce routage, Camel fournit des fonctionnalités spéciales comme 'Type Conversion' et bien d'autres ...


41
2018-04-13 12:54



Si vous connaissez les modèles d'intégration d'entreprise, Apache Camel est un cadre d'intégration qui implémente tous les EIP.

Et vous pouvez déployer Camel en tant qu'application autonome dans un conteneur Web.

Fondamentalement, si vous devez intégrer plusieurs applications avec différents protocoles et technologies, vous pouvez utiliser Camel.


34
2018-01-13 02:59



Une définition d'un autre point de vue:

Apache Camel est un framework d'intégration. Il se compose de quelques bibliothèques Java, ce qui vous aide à implémenter des problèmes d'intégration sur la plate-forme Java. Qu'est-ce que cela signifie et comment il diffère des API d'un côté et un Enterprise Service Bus (ESB) de l'autre côté est décrit dans mon article "Quand utiliser Apache Camel".


23
2018-03-16 17:08