Intégration Kafka avec Liferay (Guide complet entreprise)

 Les portails modernes doivent communiquer avec plusieurs systèmes backend en temps réel.

Au lieu d’appels synchrones, les entreprises utilisent aujourd’hui une architecture événementielle.

C’est là que Apache Kafka s’intègre parfaitement avec Liferay.

Ce guide explique comment connecter Liferay à Kafka pour une messagerie scalable.


📌 Pourquoi intégrer Kafka avec Liferay ?

Intégration classique :

Action utilisateur → REST → attente → UI lente

Intégration événementielle :

Action utilisateur → Événement → Traitement asynchrone → UI rapide

Avantages :

  • Faible couplage

  • Scalabilité élevée

  • Retry automatique

  • Temps réel


🖼️ Architecture


🧠 Cas d’usage

  • Création utilisateur → CRM

  • Upload document → traitement

  • Workflow approuvé → facturation

  • Notifications

  • Audit


🛠 Étape 1 : Dépendance Kafka

Créer module OSGi Liferay.

Gradle :

implementation 'org.apache.kafka:kafka-clients:3.6.0'

🛠 Étape 2 : Producteur Kafka

public class KafkaProducerUtil { private static final String TOPIC = "user-events"; public static void publish(String message) { Properties props = new Properties(); props.put("bootstrap.servers", "localhost:9092"); props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); Producer<String, String> producer = new KafkaProducer<>(props); producer.send(new ProducerRecord<>(TOPIC, message)); producer.close(); } }

🛠 Étape 3 : Listener Liferay

@Component( immediate = true, service = ModelListener.class ) public class UserCreateListener extends BaseModelListener<User> { @Override public void onAfterCreate(User user) { String payload = "{ \"userId\": " + user.getUserId() + " }"; KafkaProducerUtil.publish(payload); } }

Chaque utilisateur crée un événement.


🖼️ Flux d’événement


🛠 Étape 4 : Consumer Spring Boot

@KafkaListener(topics = "user-events", groupId = "crm-service") public void consume(String message) { System.out.println("Reçu: " + message); }

Traitement asynchrone backend.


🔁 Tolérance aux pannes

Kafka gère :

  • Retry

  • Offset

  • Replay

Le portail ne bloque jamais.


🔐 Sécurité

Utiliser :

  • SASL

  • SSL

  • Autorisations topics

Ne pas exposer broker.


🏆 Bonnes pratiques

✔ Événements légers
✔ JSON standardisé
✔ Topics par domaine
✔ Idempotence consommateurs


⚠️ Erreurs fréquentes

❌ Appel API direct portail
❌ Payload lourd
❌ Pas de retry
❌ UI bloquée


🎯 Flux réel

Utilisateur → événement
CRM → crée client
Email → notification
Analytics → log

Architecture découplée.


🎯 Conclusion

Kafka + Liferay apporte :

  • Temps réel

  • Scalabilité

  • Fiabilité

  • Microservices

Approche recommandée entreprise.

💼 Support professionnel disponible

Si vous rencontrez des problèmes sur des projets réels liés au développement backend d’entreprise ou à l’automatisation des workflows, je propose des services de conseil payants, de débogage en production, de support projet et de formations ciblées.

Les technologies couvertes incluent Java, Spring Boot, PL/SQL, Azure, CMS, ainsi que l’automatisation des workflows (jBPM, Camunda BPM, RHPAM).

📧 Contact: ishikhanirankari@gmail.com | info@realtechnologiesindia.com

🌐 Website: IT Trainings | Digital lectern | Digital rostrum | Digital metal podium     



Comments

Popular posts from this blog

Scopes of Signal in jBPM

OOPs Concepts in Java | English | Object Oriented Programming Explained

jBPM Installation Guide: Step by Step Setup