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.

Durable Subscriber

Le subscriber qui ne perd pas son fil — fondamental pour les flux EDI qu'on ne peut pas se permettre de manquer.

Problème

Un publish-subscribe channel classique délivre uniquement aux subscribers connectés au moment de la publication. Un partenaire EDI qui redémarre perd les messages émis pendant son indisponibilité.

Forces

  • Les flux EDI sont asynchrones — un partenaire offline 6h ne doit pas perdre les ORDRSP publiés pendant ce temps.
  • Stocker tous les messages pour tous les subscribers absents consomme du stockage broker.
  • Identifier un subscriber durable nécessite une identité stable (clientId).
  • Les messages persistés expirent selon une politique TTL ou capacity-based.

Solution

Le subscriber s'inscrit avec un identifiant stable (`clientId` JMS, `group.id` Kafka, queue durable AMQP). Le broker garde un curseur par subscriber durable et stocke les messages non lus jusqu'à délivrance. À la reconnexion, le broker délivre l'arriéré dans l'ordre. La durabilité est explicite — un subscriber non-durable se comporte comme un tap éphémère.

Implémentation EDI

En EDI, le Durable Subscriber est typique pour la diffusion d'événements internes (`InvoiceReceived`, `MDNReceived`) vers plusieurs sous-systèmes (ERP, lake analytics, customer portal). Kafka avec un `group.id` par sous-système matérialise le pattern : chaque consumer group conserve son offset, et un redémarrage d'un sous-système reprend où il s'était arrêté. Limites : si le retention (`log.retention.hours`) est trop court, un long downtime efface l'arriéré.

Anti-patterns

  • ClientId généré aléatoirement à chaque démarrage — chaque restart crée un nouveau subscriber durable et duplique le backlog.
  • Retention sous-dimensionnée — un weekend offline = perte de tous les messages.
  • Subscriber durable inutilisé non purgé — accumulation indéfinie de backlog.
  • Utiliser un subscriber durable pour un flux best-effort — gaspillage de stockage.

Patterns liés

Sources