Question

En tant qu'utilisateur Spring assaisonnée je suppose que le printemps intégration serait le plus logique dans un récent projet nécessitant des capacités de messagerie (JMS) ( plus de détails ). Après quelques jours de travail avec l'intégration du printemps, il se sent encore comme beaucoup de configuration donnée en tête la quantité de canaux que vous devez configurer pour apporter une requête-réponse (écoute sur différentes files d'attente JMS) communications en place.

Par conséquent, je cherchais des informations générales comment Camel est différent du printemps intégration, mais il semble que des informations là-bas sont assez libres, je trouve:

La question est: quelles expériences avez-vous sur l'utilisation d'une pile sur l'autre? Dans quels scénarios recommanderiez-vous Camel Spring ont été l'intégration manque de soutien? Comment voyez-vous les avantages et les inconvénients de chacun? Tout conseil de projets dans le monde réel sont très appréciés.

Était-ce utile?

La solution

Nous choisissons Camel sur Spring-intégration car l'API couramment est vraiment agréable. Nous utilisons en fait dans des projets de printemps et utiliser Spring à une partie de configuration de celui-ci. Les API de programmation sont claires et il y a un grand nombre de composants sensibles.

Nous avons fait un échange de tirs à petite échelle et essentiellement à ce moment-là pour notre exigence Camel won. Nous l'utilisons principalement pour transférer des fichiers de données internes / externes des parties qui nécessite généralement des conversions de format de l'envoyer par FTP / SFTP / ... ou l'attacher à un e-mail et l'envoyer.

Nous avons trouvé le cycle édition-compilation-debug réduit. En utilisant groovy d'expérimenter la mise en place des itinéraires sont ajoutés des bonus.

Printemps-intégration est un excellent produit aussi, et je suis tout à fait sûr qu'il répondrait à nos besoins aussi.

Autres conseils

Je ne recommande Spring Integration si vous avez déjà un projet de printemps et il vous suffit d'ajouter une certaine intégration « de base » à l'aide de fichiers, FTP, JMS, JDBC, et ainsi de suite.

Apache Camel présente deux avantages principaux:

  1. Beaucoup, beaucoup plus de technologies sont pris en charge.
  2. En outre, un (bon) DSL XML, il existe des API couramment pour Java, Groovy et Scala.

Parce que Apache Camel a une très bonne intégration avec le printemps, je dirais même l'utiliser à la place si l'intégration du printemps dans la plupart des projets de printemps.

Si vous avez besoin de plus de détails, vous pouvez lire mes expériences dans mon blog: l'embarras du choix: cadre où l'intégration à l'utilisation - Spring Integration, mule ESB ou Apache Camel?

J'ai récemment mené un chameau vs shoot-out intégration printemps dans le but d'intégrer Apache Kafka . En dépit d'être un fervent développeur de printemps, je malheureusement trouvé mon soupçon avec la pile Projet de printemps sans cesse croissant confirmé: Le printemps est impressionnant comme CIO-Container pour servir de colle pour un autre cadre, mais il ne parvient pas à fournir des solutions de rechange viables ces cadres . Il pourrait y avoir des exceptions à cette règle, à savoir tout à faire avec MVC, où le printemps est venu et où il fait un excellent travail, mais d'autres tentatives de fournir de nouvelles fonctionnalités au-dessus des caractéristiques de conteneurs tombent à court trois raisons et SI Kafka cas d'utilisation confirme tous:

  • Introduction d'un difficile de longue haleine à utiliser DSL pour XML configuration.
  • Les pages de code de configuration xml pour obtenir tous les éléments du cadre d'une connexion câblée vers le haut.
  • manque de ressources pour fournir des fonctionnalités comparables à des cadres dédiés.

Maintenant, revenons aux résultats de mon shoot-out: le plus important, je suis impressionné par Chameaux concept global des routes entre les extrémités . Kafka avec les intègre ce concept et trois lignes de configuration suffisent pour obtenir tout ce va-et-course. Les problèmes rencontrés au cours du processus sont soigneusement traitées par ample documentation de l'équipe projet ainsi qu'un beaucoup de questions sur Stackoverflow. Last but not least, il y a un l'intégration complète dans Spring que les feuilles souhaite pas lettre morte.

SI au contraire, la documentation de l'intégration Kafka est assez intense et ne parvient toujours pas à expliquer clairement comment intégrer Kafka. L'intégration de Kafka est enfoncée dans le SI sens de faire les choses, ce qui ajoute à la complexité supplémentaire. D'autres documents, par exemple sur Stackoverflow est également moins abondante et moins utile que pour Camel.

Ma conclusion:. Savetier bâton à votre commerce - l'utilisation du printemps en tant que conteneur et Camel comme cadre d'intégration du système

Je dépend vraiment de ce que vous voulez faire. Si vous avez besoin d'étendre quelque chose à construire votre propre solution de messagerie Spring Integration a le modèle de programmation mieux. Si vous avez besoin quelque chose qui prend en charge de nombreux protocoles sans code personnalisé, Camel est en avance sur l'intégration du printemps.

Avoir un échange de tirs à petite échelle est une très bonne idée, assurez-vous que vous essayez de faire le genre de choses que vous auriez normalement faire dans le projet.

- Avertissement: Je suis committers Spring Integration

La plupart des comparaisons de Camel et SI que je l'ai vu ne prennent pas en compte les éléments suivants:

1.) L'effet que le printemps Boot a eu sur la productivité des développeurs pour l'intégration Spring

.

2) L'effet du printemps XD a eu à rendre des applications Spring Integration disponibles sans compilation de code -. Également sources Spring XD et les puits sont simplement des adaptateurs de canal Spring Integration, lorsque vous cherchez à étendre Spring XD

3.) L'effet du printemps XD a eu à rendre l'unification de l'intégration du printemps, lot printemps, données printemps (+ Hadoop!) Dans une pile, ce qui porte efficacement le traitement par lots et flux, le soutien HDFS / Apache Hadoop, et beaucoup plus à Spring Integration.

4). L'effet du ressort d'intégration 4.0 Java DSL bientôt à être libéré- https://github.com/spring-projects/spring-integration-extensions/wiki/Spring-Integration-Java-DSL-Reference

Pour votre considération,

/ Pieter (disclaimer travail I au Pivotal)

Nous utilisons Spring Integration pour notre application et envisage maintenant de passer à Apache Camel que nous avons rencontré beaucoup de problèmes avec le cadre d'intégration du printemps. Voici quelques questions.

  1. Le CachingConnectionFactory qui ouvre Spring fournit 1000 de connexions inactives dans IBM MQ et il n'y a aucune garantie que ces connexions sont réutilisées. Et encore ces connexions resteront ouvertes pour toujours ce qui crée des problèmes sur le côté MQ. Nous avons dû redémarrer l'application chaque semaine dans des environnements plus bas pour rafraîchir les connexions. Apache Camel fournit également les connexions Mise en cache et semble aller haut / bas en fonction de la charge.

  2. Le printemps ne fournit pas cartographes pour les paramètres de qualité de service. Même si vous activez la qualité de service, le mode de livraison et les propriétés d'expiration / TimeToLive seront perdus (je vais soulever une question de JIRA pour cela). paramètres Apache Camel gère cela et de qualité de service sont envoyés aux applications en amont et non la laisser tomber.

Je suis juste travaille actuellement sur les questions à traiter les exceptions et les transactions avec Apache Camel qui Spring semblait mieux gérer avec AOP.

En fait, je dirais que FTP a gradué sa période d'incubation. Vous pouvez faire une recherche sur les forums SI / JIRA pour voir les nouvelles fonctionnalités ont été mises en œuvre et des bugs qui ont été corrigés. De divers bavardages, il semble qu'il y ait déjà une certaine utilisation de la production hors de lui, je vous conseille donc de lui donner un second regard et de communiquer vos préoccupations bien sûr à nous via

http://forum.springsource.org/forumdisplay.php?42-Integration
https://jira.springsource.org/browse/INT

Vive Oleg

Disclaimer: Je suis Spring Integration committer

Apache Camel est un très bon cadre et très complet aussi. Mais si votre application utilise le printemps, mon avis personnel est d'utiliser Spring Integration.

L'intégration du printemps est l'intégration cadre de la plainte EIP de l'écosystème Printemps-Source. Il a une excellente intégration avec l'écosystème: démarrage Spring, lot, XD; même les utilisations de base même abstraction à partir de Spring Framework 4. Une partie de l'abstraction de messagerie ont été déplacés dans le cadre, comme une preuve que l'abstraction de la messagerie de base de printemps L'intégration est très forte. Maintenant, Spring Framework, par exemple, utiliser l'abstraction de messagerie Web pour le printemps, le support des sockets web.

Une autre bonne chose dans une application de printemps en ce qui concerne l'intégration de printemps à utiliser Apache Camel est que l'intégration Spring, vous pouvez utiliser un contexte d'application. Rappelez-vous que le contexte Camel est un contexte printemps. si vous avez la chance d'utiliser une nouvelle version de printemps, je suggère d'utiliser Spring Integration Java DSL pour la configuration. Je l'utilise sur mes nouveaux projets, et il se sent plus lisible et claire. Je souhaite que cette réflexion peut vous aider pour les vos évaluations.

L'une des raisons d'utiliser Camel Spring sur l'intégration est quand vous avez besoin d'un ensemble de EIP propose plus de possibilités. L'intégration du printemps ne fournit pas des abstractions sur des choses telles que ThreadPool.

Camel fournit des constructions supplémentaires pour ce qui simplifie certains des aspects du travail avec code concurrent:

http://camel.apache.org/camel-23-threadpool- configuration.html

Si vous avez pas besoin de ce genre de chose et juste voulez fichier de connexion, JMS, FTP terminaux etc ... puis il suffit d'utiliser Spring Integration.

acte Camel comme middleware pour les applications où l'on peut effectuer une modélisation de données, la transformation des valeurs de message et la chorégraphie de messages.

Si votre application actuelle est au printemps et nécessitent des fonctionnalités qui sont prises en charge par l'intégration de Spring EIP puis Spring Integration est la meilleure option nécessite plus d'autre tiers parti appuie / protocoles / fichier formats etc

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top