Messaging Bridge
Le pont entre deux brokers — pour migrer progressivement d'un héritage vers une plateforme moderne sans rupture.
Problème
Une organisation modernise son hub EDI : nouvelles flows sur Kafka, anciennes flows toujours sur l'AS2 hub IBM Sterling. Pendant la transition, les consumers du legacy doivent voir les nouvelles flows, et inversement.
Forces
- Une rupture brutale entre deux brokers casse les intégrations partenaires.
- Un pont bidirectionnel doit éviter les boucles infinies (message qui rebondit).
- La sémantique des deux brokers diverge (acks, ordering, idempotency) — le pont doit traduire.
- Le throughput du pont ne doit pas devenir le bottleneck.
Solution
Déployer un composant bridge dédié qui consomme d'un broker A, traduit les headers et la sémantique d'ack, et publie sur un broker B. Le bridge est stateful (curseurs sur les deux côtés), idempotent, et observable. Patterns d'évitement de boucle : un header `_bridged_from` ou un topic dédié non re-pollé. Implémentations : Apache Camel routes, Confluent Replicator, Kafka MirrorMaker 2.
Implémentation EDI
En EDI, le Messaging Bridge est l'outil de migration le plus courant. Cas type : un AS2 hub Sterling Integrator pousse les MDN reçus vers une queue MQ ; un bridge MQ→Kafka publie chaque MDN dans `edi.mdns` avec enrichissement (`partner_id`, `business_correlation_id`). Sur le retour, le bridge Kafka→MQ pousse les acknowledgements vers Sterling. Critique : maintenir un mapping table pour translater les identifiants legacy ↔ moderne.
Anti-patterns
- Bridge sans loop protection — un message rebondit entre les deux brokers indéfiniment.
- Bridge sans translation header — la sémantique partner_id se perd entre brokers.
- Bridge stateful sans persistence — un restart perd les curseurs.
- Bridge synchrone bloquant — un downtime du broker B bloque toute la chaîne A.
Patterns liés
- Message Endpoint — composant principal des deux côtés.
- Normalizer — traduction format-dépendante.
- Canonical Model — modèle pivot inter-brokers.
Sources
- Hohpe G., Woolf B. — EIP, Messaging Bridge (p. 133). www.enterpriseintegrationpatterns.com/patterns/messaging/MessagingBridge.html
- Apache Kafka — MirrorMaker 2. kafka.apache.org/documentation/#georeplication