Tracer sa route avec Camel
Dans le cycle de développement de routes Camel, la phase la plus importante est la conception. Cette conception consiste à dessiner les routes en utilisant les EIP, le nom des routes et en spécifiant le format des messages. Il y a deux solutions pour dessiner ces routes.
Les deux solutions sont :
LibreOffice
LibreOffice ou OpenOffice (au choix) Draw avec cette librairie de composants : http://sites.google.com/site/rogersearjeant/eip-shapes-for-openoffice-draw

Fuse IDE for Camel
L’IDE (plugin Eclipse) de Fuse qui semble assez prometteur : http://fusesource.com/fuse/camel-beta/

Ce plugin permet de tracer sa route en la liant aux beans Spring et de générer un Camel-context. Je n’ai pas vraiment eu le temps de le testé, mais le peux que j’en ai vu, j’ai regretté l’absence du copier/coller et du drag&drop de boiboites. Il est très fortement typé Maven. Cependant, ce n’est qu’une version bêta. A suivre…
Tracer les routes programmatiquement avec getRouteDefinition()
Depuis Camel 2.x, vous pouvez interroger le CamelContext pour obtenir la définition d’une route et inspecter ses étapes :
CamelContext context = new DefaultCamelContext(); |
Activer le Tracer de Camel
Camel intègre un mécanisme de trace qui logue chaque message à chaque étape de la route. Idéal en développement :
context.setTracing(true); |
Avec tracing=true, Camel affiche dans les logs chaque message entrant/sortant, le nom de la route et le nœud visité. Combinez-le avec LoggingLevel pour filtrer :
from("file:data/inbox") |
Camel Debugger (outil moderne)
Les Camel IDE modernes (VS Code avec l’extension Camel Debugger, ou Tooling for Apache Camel dans Red Hat CodeReady Studio) permettent de :
- Placer des breakpoints sur les nœuds d’une route
- Inspecter le contenu des messages (body, headers, exchange properties)
- Avancer pas à pas dans le flux EIP
- Visualiser les routes graphiquement
Tester les routes avec CamelTestSupport
Pour du TDD, CamelTestSupport permet de démarrer un contexte Camel pour chaque test, avec mocks :
public class MonRouteTest extends CamelTestSupport { |
CamelTestSupport s’occupe de tout : création du contexte, gestion du cycle de vie, templates de test. Ajoutez simplement la dépendance camel-test dans votre pom.xml.