AEM Eventing
Learn about AEM eventing, what it is, why and when to use it and examples of it.
What it is
AEM Eventing is a cloud-native eventing system that enables subscriptions to AEM Events for processing in external systems. An AEM Event is a state change notification sent by AEM whenever a specific action occurs. For example, this can include events when a content fragment is created, updated, or deleted.
The above diagram visualized how AEM as a Cloud Service produces events and sends them to the Adobe I/O Events, which in turn exposes them to event subscribers.
In summary there are three main components:
- Event provider: AEM as a Cloud Service.
- Adobe I/O Events: Developer platform for integrating, extending, and building apps and experiences based on Adobe’s products and technologies.
- Event consumer: Systems owned by the customer that subscribe to the AEM Events. For example, a CRM (Customer Relationship Management), PIM(Product Information Management), OMS (Order Management System), or a custom application.
How is it different
The Apache Sling eventing, OSGi eventing, and JCR observation all offer mechanisms to subscribe to and process events. However, these are distinct from the AEM Eventing as discussed in this documentation.
Key distinctions of AEM Eventing include:
- The event consumer code is executed outside of AEM, not running in the same JVM as AEM.
- AEM product code is responsible for defining the events and sending them to Adobe I/O Events.
- Event information is standardized and sent in JSON format. For more details, refer to cloudevents.
- To communicate back to AEM, the event consumer uses the AEM as a Cloud Service API.
Why and when to use it
AEM Eventing offers numerous advantages for system architecture and operational efficiency. Key reasons to use AEM Eventing include:
- To build event-driven Architectures: Facilitates the creation of loosely coupled systems that can scale independently and are resilient to failures.
- Low code and lower operational costs: Avoids customizations in AEM, leading to systems that are easier to maintain and extend, thus reducing operational expenses.
- Simplify communication between AEM and external systems: Eliminates point-to-point connections by letting Adobe I/O Events manage communications, such as determining which AEM events should be delivered to specific systems or services.
- Higher durability of events: Adobe I/O Events is a highly available and scalable system, designed to handle large volumes of events and reliably deliver them to subscribers.
- Parallel processing of events: Enables the delivery of events to multiple subscribers simultaneously, allowing for distributed event processing across various systems.
- Serverless application development: Supports deploying the event consumer code as a serverless application, further enhancing system flexibility and scalability.
Limitations
AEM Eventing, while powerful, has certain limitations to consider:
- Availability restricted to AEM as a Cloud Service: Currently, AEM Eventing is exclusively available for AEM as a Cloud Service.
- Limited event support: As of now, only AEM Content Fragment events are supported. However, the scope is expected to expand with the addition of more events in the future.
How to enable
AEM Eventing is enabled per AEM as a Cloud Service environment and only available to environments in pre-release mode. Contact AEM-Eventing team to enable your AEM environment with AEM Eventing.
If already enabled, see Enable AEM Events on your AEM Cloud Service Environment for next steps.
How to subscribe
To subscribe to AEM Events, you do not have to write any code in AEM, but rather an Adobe Developer Console project is configured. The Adobe Developer Console is a gateway to Adobe APIs, SDKs, Events, Runtime, and App Builder.
In this case, a project in the Adobe Developer Console enables you to subscribe to events emitted from AEM as a Cloud Service environment and configure the event delivery to external systems.
For more information, see How to subscribe to AEM Events in the Adobe Developer Console.
How to consume
There are two primary methods for consuming AEM Events: the push method and the pull method.
- Push method: In this approach, the event consumer is proactively notified by Adobe I/O Events when an event becomes available. Integration options include Webhooks, Adobe I/O Runtime, and Amazon EventBridge.
- Pull method: Here, the event consumer actively polls Adobe I/O Events to check for new events. The primary integration option for this method is the Adobe Developer Journaling API.
For more information, see AEM Events processing via Adobe I/O Events.