Hi,
I'm working on this replication listener to capture events on my publish instance whenever DAM assets are published in our author instance.
This replication listener is used to filter paths and if matches our desired filters, it will also trigger replication to other publisher.
Basically, our setup is:
When activating a cq:page:
AUTHORING (author) ==> STAGING (publish).
Then activate from STAGING (publish) ==> LIVE (publish)
When activating/deactivating a dam:Asset
AUTHOR ==> STAGING
AUTHOR ==> LIVE
Sample code below:
@Component(
label = "Replication Event Listener",
description = "Listen to replication events and relay it to publisher if necessary.",
metatype = false
)
@Properties({
// Scope the paths as tightly as possible based on your use-case.
@Property(
label = "Topic",
description = "Event topic for replication",
name = EventConstants.EVENT_TOPIC,
value = ReplicationAction.EVENT_TOPIC
)
})
@Service
public class ReplicationEventListener implements EventHandler {
private Logger log = LoggerFactory.getLogger(this.getClass());
@Override
public void handleEvent(Event event) {
String n[] = event.getPropertyNames();
log.info("");
log.info("Event occurred: {}", event.getProperty(WorkflowEvent.EVENT_TYPE));
log.info("Event properties: ");
for (String s : n) {
log.info(s + " = " + event.getProperty(s));
}
action = ReplicationAction.fromEvent(event);
if (action != null) {
log.info("Replication action {} occured on {} ", action.getType().getName(), action.getPath());
}
log.info("");
}
}
Solved! Go to Solution.
Views
Replies
Total Likes
Yes, It is writing logs.
I think I got it solved already. I have figured out that it is not triggering any replication action but only:
org/apache/sling/api/resource/Resource/ADDED
org/apache/sling/api/resource/Resource/CHANGED
org/apache/sling/api/resource/Resource/REMOVED
Here's my
@Properties({
@Property(
label = "Filter",
description = "Event filter for replication",
name = EventConstants.EVENT_FILTER,
value = "(path=/content/dam/*)"
),
@Property(
label = "Topic",
description = "Event topic for replication",
name = EventConstants.EVENT_TOPIC,
value = {
SlingConstants.TOPIC_RESOURCE_ADDED,
SlingConstants.TOPIC_RESOURCE_CHANGED,
SlingConstants.TOPIC_RESOURCE_REMOVED
}
)
})
@Service
public class DamEventListener implements EventHandler {
private Logger log = LoggerFactory.getLogger(this.getClass());
@Override
public void handleEvent(Event event) {
String path = (String) event.getProperty(SlingConstances.PROPERTY_PATH);
String topic = event.getTopic();
log.info("PATH: {}", path);
log.info("TOPIC: {}", topic);
}
}
Views
Replies
Total Likes
Moving this to the Assets topic!!
Views
Replies
Total Likes
Id your log messages being written to the log file?
Views
Replies
Total Likes
Yes, It is writing logs.
I think I got it solved already. I have figured out that it is not triggering any replication action but only:
org/apache/sling/api/resource/Resource/ADDED
org/apache/sling/api/resource/Resource/CHANGED
org/apache/sling/api/resource/Resource/REMOVED
Here's my
@Properties({
@Property(
label = "Filter",
description = "Event filter for replication",
name = EventConstants.EVENT_FILTER,
value = "(path=/content/dam/*)"
),
@Property(
label = "Topic",
description = "Event topic for replication",
name = EventConstants.EVENT_TOPIC,
value = {
SlingConstants.TOPIC_RESOURCE_ADDED,
SlingConstants.TOPIC_RESOURCE_CHANGED,
SlingConstants.TOPIC_RESOURCE_REMOVED
}
)
})
@Service
public class DamEventListener implements EventHandler {
private Logger log = LoggerFactory.getLogger(this.getClass());
@Override
public void handleEvent(Event event) {
String path = (String) event.getProperty(SlingConstances.PROPERTY_PATH);
String topic = event.getTopic();
log.info("PATH: {}", path);
log.info("TOPIC: {}", topic);
}
}
Views
Replies
Total Likes
We have an older AEM article that shows logic for a replication event handler too -- Adobe CQ Help | Creating Replication Event Handlers for Adobe Experience Manager
Views
Replies
Total Likes
Yeah, I actually used that logic when listening to the replication of our pages.
Views
Replies
Total Likes