Note de lecture : Camel in Action, par Claus Ibsen & Jonathan Anstey

Note : 7 ; La qualité des grands classiques “in action”

La série « in action » chez Manning est en principe une recette éprouvée. Elle doit permettre de rencontrer des ouvrages solides, dont les sujets sont bien abordés de manière progressive et illustrée en se salissant les mains. Malheureusement trop de titres échouent aux portes des critères qualité. Rien de tout cela ici. Le texte est solide, abondement pourvu d’illustrations (parfois trop, certaines ne servent à rien) et d’exemples de code.

Camel est un framework recelant de nombreuses facettes, parfois insoupçonnées. Les auteurs les abordent de manière systématique avec un bon niveau de profondeur. Voyons cela. D’abord ce volume nous assène 460 pages hors annexes. Sérieux me direz-vous ? La seconde édition sortie depuis accuse elle dans les 900 pages ! Revenons à celle-ci. L’ensemble est structuré en 3 parties pour un total de 14 chapitres. Oui, cela signifie donc des chapitres plutôt conséquents.

La première partie « first steps » est aussi la plus courte : moins de 60 pages avec seulement deux chapitres. La première partie « Meeting Camel » nous permet de faire le tour du propriétaire et de découvrir notre premier « hello world » de manière très agréable. C’est aussi l’occasion de faire connaissance avec les concepts de base de Camel. Les Enterprise Intégration Patterns (EIP) sont même évoqués mais sans plus. Coup de zoom au second chapitre « Routing with Camel » qui va en fait assez loin dans les différents concepts de routage, allant jusqu’au multicast ! L’étude de cas abordée ici n’est pas utilisée au fil de l’ouvrage de façon mortelle, mais au moins sert-elle de point d’ancrage. Les auteurs switchent aussi beaucoup entre le « Java DSL » et le « Spring DSL » allant jusqu’à utiliser le Java DSL avec Spring (en fait leur cocktail préféré ». Cette bascule permanente permet certes d’aborder de manière exhaustive les deux manières de faire sur tous les sujets mais est aussi assez fatigante.

La seconde partie « Core Camel » compte 220 pages avec 6 chapitres. Rien qu’au titre, il est facile d’imaginer qu’il s’agit de la partie la plus importante. Elle s’ouvre au chapitre 3 avec les mécanismes de transformation de données. J’en retiens essentiellement le Processor (l’occasion d’aborder ce concept très important), la transformation XSLT et les convertisseurs de type, et d’autres mécanismes encore. Un chapitre bien rythmé qui permet de faire le tour de la question. Le chapitre 4 « using beans with Camel » demande plus d’attention mais en retour il montre clairement comment développer une logique métier s’accostant à Camel sans en subir les adhérences !

La gestion des erreurs est aussi un sujet plus touffu qu’imaginé de prime abord. Il est l’objet de la trentaine de pages du chapitre 5. Camel fait la différence entre les erreurs recouvrables et non recouvrable et propose un mécanisme de captation des exceptions dans le premier cas et même des possibilités de réessais ou de « deadletter ». Camel, c’est vraiment badass ! Les tests sont l’objet du chapitre 6. Peut-être les auteurs voulaient-ils aborder la gestion des erreurs en préalable ? Sinon j’aurais bien vu ce chapitre plus tôt dans l’ouvrage. On y aborde bien les tests unitaires avec le toolkit Camel et les mocks en inbound ou en outbound. Les tests d’intégration sont moins convaincants mais au moins le sujet est-il abordé.

Le chapitre 7 passe en revue de nombreux composants prêts à l’emploi, 12 pour être précis. On en prend pour une cinquantaine de pages et ce n’est pas le chapitre le plus sympatique du livre avec son allure de catalogue. En fait, il est assez inégal : par exemple CXF et ses longues litanies de WSDL est un peu rébarbatif, alors que le composant Quartz se laisse lire avec facilité. Le titre du chapitre 8 (EIP) est assez trompeur, car il n’évoque que quelques composants orientés EIP sur ses 40 pages. En fait près de la moitié du chapitre est consacré à l’agrégateur, un mécanisme très complexe aux multiples facettes. Peut-être n’était-il pas nécessaire d’aller jusque dans les coins sombres ? Splitters et Routeurs sont vus ensuite de manière plus rapide.

La troisième partie « Out in the Wild » regroupe également 6 chapitre et est forte de 180 pages. Cela commence fort avec les transactions qui sont l’objet du chapitre 9 avec de nouveau une trentaine de pages pour adresser le sujet. Celui-ci est intrinsèquement aride, mais les auteurs s’en tirent bien pour évoquer les transactions Spring, les transactions XA et la compensation. Il subsiste toujours des adhérences dans le discours entre Spring et Camel, mais c’est un moindre mal. Concurrence et scalabilité sont au programme d’un chapitre 10 long de près de 45 pages. On y évoque entre autres les pools de threads et l’API de concurrence de Java. Pas le meilleur chapitre du livre, mais il fait le boulot.

Petite respiration au chapitre 11 où l’on construit un projet Camel depuis zéro avec Maven et ses archétypes. C’est même marrant de trouver un chapitre traitant d’aspects aussi basiques aussi loin dans le livre ! C’est en tout cas un indispensable pour mettre le pied à l’étrier en complément des deux premiers chapitres ! Management et monitoring sont des sujets importants souvent traités de façon ennuyeuse. On s’en sort bien ici, Camel a pas mal de choses à offrir, ça aide.

Le chapitre 13 sur le run de Camel en production est décent. Il traite l’empaquetage dans une application Java, une Webapp et un conteneur OSGi. Il traite aussi de l’arrêt de l’application en production, un sujet moins simple qu’il n’y parait. Je reste quand même un peu sur ma faim. Pour clore le livre, nous terminons sur le Bean routing and remoting. Le sujet vient en complément du chapitre 4, mais l’intérêt de l’inclure dans le livre ne m’a pas semblé évident.

Le livre est riche et il est brillamment traité. Les auteurs sont très affutés sur le sujet, étant des contributeurs majeurs du projet. C’est une lecture conséquente. A défaut d’être passionnant, le texte est clair et pertinent. Bref, c’est un « in action » avec la qualité que l’on en attend.

Camel in Action, par Claus Ibsen & Jonathan Anstey

Référence complète : Camel in Action – Claus Ibsen & Jonathan Anstey – Manning 2011 – ISBN : 978 1 935182 36 6

Publicité

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.