web-dev-qa-db-fra.com

Apache Camel et d'autres produits ESB

Hey,
Si nous avons Apache Camel, pourquoi utiliser d'autres solutions telles qu'Apache ServiceMix et Mule?
Y a-t-il quelque chose que Apache Camel ne peut pas comparer à ces produits?
Quand utiliser Mule/ServiceMix et quand utiliser Camel?

70
Chiron

Apache Camel est une bibliothèque qui implémente des modèles d'intégration d'entreprise (EIP). Bien qu'il puisse utiliser Spring comme cadre IOC, il n'est même pas dépendant de Spring, il est donc totalement indépendant de la plate-forme. C'est "juste" une bibliothèque. Vous pouvez donc exécuter n'importe quel environnement JVM, par exemple simple jvm, servlet, ejb, osgi. Il n'apporte aucun des avantages (ou des frais généraux) d'un conteneur tel que Mule. À mon avis, la séparation des préoccupations dans ce domaine est plus nette.

Mule peut également être intégré à différents environnements, mais je pense que Mule présente à la fois les avantages et les inconvénients du couplage de leur bibliothèque EIP à leur conteneur. Lorsque vous déployez Mule dans un environnement de servlet ou ejb, souhaitez-vous réellement transporter tous les bagages du conteneur Mule? Je ne suis pas un expert de Mule, et je pense que vous pouvez probablement consacrer un effort relativement modeste et nettoyer une partie de la capacité redondante. (Notez que cette fonctionnalité n’est pas mauvaise dans tous les cas, elle est simplement redondante si vous utilisez une version intégrée dans un autre conteneur.)

Apache ServiceMix est un conteneur OSGI qui utilise Camel pour implémenter EIP comme base d'un ESB. Bien que ServiceMix ait historiquement commencé avec ses racines dans JBI, il s’est écarté de JBI et a évolué pour devenir (IMO) une belle architecture en couches combinant les meilleurs Apache CXF, Camel et ActiveMQ dans un conteneur OSGI. La valeur principale ici n'est pas vraiment ServiceMix et son support JBI, mais le conteneur standard / OSGI sous-jacent// couplé à des transports Apache éprouvés tels que CXF pour les services Web et ActiveMQ pour JMS. OSGI est un standard mature qui propose un conteneur qui aborde les mêmes types d’enfers "DLL" que ceux qui ont affecté Microsoft avant l’avènement de .NET. Bien que ni .NET ni OSGI ne résolvent la complexité essentielle du problème sous-jacent, ils fournissent au moins un moyen de le résoudre. OSGI présente également d’autres avantages, mais du point de vue de la sélection des produits, le conteneur standard est primordial et la gestion des dépendances est l’une des caractéristiques essentielles que Mule (et Java en général) ne prend pas en compte.

Quelques points importants à noter lors de la comparaison des communautés Mule et Apache. Mule est comme Redhat dans le sens où bien qu’il s’agisse d’une licence open source, ce n’est pas vraiment, à mon avis, une communauté ouverte. Tout le monde peut participer à Apache alors que MuleSoft est propriétaire de la communauté Mule et de la feuille de route finale. Deuxièmement, bien que la communauté muletienne soit sans doute très active, je pense que la communauté apache est beaucoup plus grande (et naturellement, puisque ce n’est pas une communauté fermée). Les deux approches ont à la fois des avantages et des inconvénients. L’un des aspects positifs de l’approche Apache est qu’il existe plusieurs fournisseurs pour ESB basés sur Camel, CXF, ActiveMQ et OSGI. Par exemple, Talend propose un ESB sur les mêmes technologies de base sans l'historique ServiceMix JBI. Cela a des avantages et des inconvénients au sein de la communauté Apache, mais l’essentiel est de souligner la différence entre Apache et Mule. Vous ne trouverez pas plusieurs vendeurs dans la communauté Mule. Ainsi, IMO, un ESB Apache tel que Talend ou ServiceMix, est une communauté plus large et plus inclusive, et finalement compétitive, qu'une communauté fermée comme Mule.

Ed Ost

64
Ed Ost

Mon article de blog répond exactement à cette question: http://www.kai-waehner.de/blog/2011/06/02/when-to-use-Apache-camel/ => Apache Camel est une intégration légère. cadre, ServiceMix et ainsi de suite sont des ESB complets.

8
Kai Wähner

Camel est un moteur de médiation, tandis que Mule est une plate-forme d'intégration légère. La différence est que Mule offre toutes les fonctionnalités d'un ESB, y compris un conteneur pour le déploiement d'applications, REST et les services Web. Mule peut être intégré de la même manière Camel pour permettre aux développeurs d’appliquer leur code d’application à leur code d’intégration. Les deux s'intègrent étroitement avec Spring. 

Mule n'utilise pas JBI pour de bonnes raisons et maintenant que la spécification JBI a été dissoute (pas de groupe de travail, propriété d'Oracle ayant transmis la spécification JBI à l'origine), il n'existe aucune bonne raison professionnelle ou technique d'utiliser JBI. 

5
Ross Mason

Apache Camel contient des FAQ entrées qui apportent des éclaircissements à ce sujet http://camel.Apache.org/faq

Et la collection de liens sur Apache Camel http://camel.Apache.org/articles.html

Établissez des liens lorsque des membres de la communauté parlent et comparez Camel à d'autres projets.

4
Claus Ibsen

Noël, il y a un certain nombre d'erreurs dans la FAQ de Camel, sans surprise, aucune d'elles en notre faveur :)

  • le modèle UMO dans Mule n'est plus dans Mule. Nous avons commencé à nous éloigner de ce modèle dans Mule 2 et il a été complètement modifié dans Mule 3. Nous avons maintenant un modèle de processeur de messages très simple qui rend votre déclaration superflue.
  • Mule a eu une conversion de type explicite depuis quelques années maintenant, ce n'est pas un différentiateur pour Camel
  • Mule est licencié sous la licence CPAL 1.0 approuvée par OSI . Ceci est une licence open source et non commerciale. S'il vous plaît mettre à jour cette ASAP
0
Ross Mason

Tout d'abord, vous devez comprendre que Service Mix est comme un conteneur pouvant exécuter du code Apache Camel et que Mule ESB est un produit distinct à lui seul. 

Vous pouvez créer de nombreuses différenciations entre les produits ESB. 

Vous devriez savoir quelques choses avant de regarder dans la différenciation. Elles sont 

  1. Comment les produits sont développés 
  2. Sa licence 
  3. Ses caractéristiques de soutien
  4. Open Source ou pas
  5. Si open source, la source peut être modifiée et utilisée Et ainsi de suite. 

Ce qui précède sera l’un des meilleurs facteurs à prendre en compte avant de faire votre choix. Ce qui précède est générique pour la plupart des produits et doit faire l’objet d’une attention particulière. 

La différence de produit secondaire sera spécifique aux outils et à son domaine. C'est probablement la réponse que vous recherchez. Trouvez la liste que vous devez faire une introspection avant de faire une sélection.

  1. Soutien communautaire
  2. Produit pile
  3. Extensibilité en termes de modification de votre propre code 
  4. Apprentissage et facilité d'utilisation
  5. Support produit lors de l'achat en entreprise

C’est probablement une recherche que vous devez faire vous-même pour choisir la différence. Il existe de nombreux moyens d'ajouter de la valeur au produit pour que celui-ci soit adapté à votre organisation plutôt que d'être le meilleur sur le marché.

Quand il s'agit de Apache camel ou Other ESB. La différence qui fera 

  1. Le nombre de transport
  2. Apache Camel vous fournit la variété de DSL sur Mule et d'autres solutions, à savoir qu'ils n'ont pas plusieurs DSL comme dans Camel. 
  3. Mule dans sa pile de produits contient la gestion des API et des connecteurs Cloud internes, où Apache Camel est un cadre lorsque Fuse ESB est pris en compte. JBoss Stack fournit une quantité décente d’autres produits pouvant compléter votre sélection. 
0
Naveen Raj