ediverse Explorer la plateforme

À la une PEPPOL BIS Billing 3.0 L’obligation européenne d’e-invoicing arrive : France sept 2026, Belgique janv 2026, Allemagne 2025.

Service Activator

Le pont entre la queue et l'API : reçoit un message, appelle un service, gère la réponse — la passerelle classique vers les systèmes legacy.

Problème

Un système métier existant (ERP, OMS, mainframe) expose une API sync (SOAP, REST, RPC). Le hub EDI publie des messages async. Comment relier les deux sans modifier l'application existante ?

Forces

  • Le système métier ne peut souvent pas devenir consumer de queue (pas de SDK, pas de modification possible).
  • Le service activator doit gérer les retries, timeouts, et l'idempotency côté API legacy.
  • Une exception du service legacy doit être encapsulée et routée correctement (DLQ, retry, alert).
  • La latence du service sync impose un parallélisme limité côté activator.

Solution

Introduire un composant activator qui consomme du message broker, désérialise, prépare la requête, appelle l'API sync, attend la réponse, et soit acquitte (success) soit retry/escalade (failure). Le pattern paye sur le découplage : l'application legacy reste inchangée, le hub gère toute la complexité messaging. Implémentations classiques : Apache Camel `<process>` avec call HTTP, Spring Integration `<service-activator>`.

Implémentation EDI

En EDI, le Service Activator est le moyen le plus fréquent d'intégrer un ERP non-Kafka-native. Un consumer Camel sur `edi.orders` désérialise un JSON canonique, appelle un endpoint SAP via IDoc ou OData, attend la réponse, et publie un évènement `OrderImported`. Patterns associés : Circuit Breaker autour de l'appel API legacy, Idempotent Receiver côté DB de l'ERP, Dead Letter Channel pour les exceptions non-retriables.

Anti-patterns

  • Activator sans timeout — un service legacy lent bloque tout le consumer pool.
  • Activator sans retry — une glitch temporaire envoie tout en DLQ.
  • Activator qui mute le message en place et acquitte avant la réponse legacy — perte de données si l'API legacy échoue.
  • Activator qui appelle plusieurs services en cascade sans saga — incohérences sur exception.

Patterns liés

Sources