Traditional Liferay implementations often rely on synchronous REST calls, creating tightly coupled systems that are difficult to scale and maintain. This session explores how to transform Liferay into an event-driven platform using Kafka, message queues, webhooks, and asynchronous processing. Learn how to build scalable, resilient, and loosely coupled enterprise solutions that seamlessly integrate with external systems such as SAP, Salesforce, payment gateways, and custom microservices.
Problem Statement
Most Liferay projects look like:
User
↓
Liferay
↓
REST API
↓
SAP
Issues:
- Slow response times
- SAP downtime affects portal
- High coupling
- Poor scalability
- Failed transactions are difficult to recover
Event-Driven Solution
User
↓
Liferay
↓
Kafka Topic
↓
Consumers
├── SAP
├── CRM
├── Notification Service
└── Analytics Service
Benefits:
- Loose coupling
- Better scalability
- Fault tolerance
- Retry mechanisms
- Real-time integrations
Kafka Integration with Liferay
Use Case
Citizen submits GST application.
Instead of:
callSAP();
callCRM();
sendEmail();
Publish event:
ApplicationSubmittedEvent
Producer from Liferay
ProducerRecord<String, String> record =
new ProducerRecord<>(
"citizen-applications",
applicationJson);
producer.send(record);
Kafka Topics
citizen-applications
user-registration
payment-completed
document-uploaded
workflow-approved
Message Queues
Example: User uploads document.
Without Queue:
Upload
↓
Virus Scan
↓
OCR
↓
SAP Update
↓
Email
Response time:
20 seconds
With Queue:
Upload
↓
Queue
↓
Success Response
Background workers process:
OCR
SAP Update
Notifications
Response:
< 1 second
Async Processing in Liferay
Real Scenario
Generating reports for 500,000 records.
Bad approach:
MVCActionCommand
↓
Generate Report
↓
Return Response
Browser times out.
Better Approach
MVCActionCommand
↓
Publish Event
↓
Return Job ID
Background worker:
Generate PDF
Store Document
Notify User
User gets notification when complete.
Webhooks
Webhooks allow Liferay to notify external systems.
Example:
Workflow Approved
Trigger:
POST /external-api
Payload:
{
"applicationId":"12345",
"status":"APPROVED"
}
Use cases:
- Salesforce updates
- SAP integration
- CRM synchronization
- Payment notifications
Liferay Objects + Events
Many developers overlook this.
Objects can trigger:
Create
Update
Delete
events.
Example:
Citizen Object
Citizen Created
Automatically:
Webhook
Kafka Event
Notification
Workflow
No custom portlet required.
External System Communication
Common Enterprise Landscape
Liferay
│
├── SAP
├── Salesforce
├── ServiceNow
├── Payment Gateway
├── ECM
└── Government Systems
Instead of direct integrations:
Liferay
↓
Event Bus
↓
Microservices
Each system subscribes independently.

Leave a Reply