Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
BedrockMission!

Learn more

View all

Sign in to view all badges

SOLVED

Can we control the order of replication agents?

sudhag73425455
Level 3
Level 3

We are using AEM 6.3

My use case:

There are totally 3 replication agents in my scenario

1. On author, I have 2 replication agents

2. One for activating the content to publish instance

3. One agent to purge Akamai Cache.

4. On publish there is one replication agent to flush dispactcher cache.

Issue: I want to activate Akamai Cache purge ONLY AFTER flushing dispatcher cache. So on author, can I trigger Akamai Cache Purge Agent only after the content gets activated on Publish instance? Can I do that?

Note:

1. Having the Akamai Flush agent on Publish instance WILL NOT work for me, since in my production, I have 4 publishers and I do not want Akamai requests to flow from all the 4 publishers.

2. I want this order of flushing cache -> First Publisher then Dispatcher and then Akamai to avoid any race condition.

Let me know if there is any better way to handle this use case.

1 Accepted Solution
Jörg_Hoh
Correct answer by
Employee
Employee

You cannot control the order in which the replication happens; these run asynchronous and can be blocked/delayed by various reasons (e.g. a publish might be down for restart).

If you want to enforce that the Akamai invalidation agent is triggered after the other replication happened, you have to run all activation through a workflow, and use synchronous replication to replicate to the publishs; in the next you can invoke the Akamai invalidation agent. But imagine the case when a publish is down; then your complete replication is blocked!

I solve this problem typically by not invalidating Akamai at all, but use TTL-based expiration on Akamai. You will deliver outdated content, but delivering 10 minute old content is typically not a problem.

Jörg

View solution in original post

6 Replies
Arun_Patidar
Community Advisor
Community Advisor

Hi,

You can try to add two Process Steps in your workflow and select Replication agent programmatically for example

1. first process step to replicate your content followed by flushing dispatcher cache on all 4 publishers

2. second process step Purge Akamai cache

With the help of that you can manage sequence.

CQ5.3: How to activate to a specific replication agent

Thanks

Arun

sudhag73425455
Level 3
Level 3

Workflow is one option.

But for us, we want to get this working using the Activate button.

Is there any way?

sudhag73425455
Level 3
Level 3

Okay, if I understand correctly steps would be:

1. create an event listener for activation event

2. add custom code to replicate required replication agents in the given order as per your code.

3. SO now, whenever any file is activate-> triggers event listener which will decide which replication agent to invoke.

Is this the flow?

smacdonald2008
Level 10
Level 10

I have personally not tried that - but it looks like the correct approach - according to that doc. I would start with that.

Jörg_Hoh
Correct answer by
Employee
Employee

You cannot control the order in which the replication happens; these run asynchronous and can be blocked/delayed by various reasons (e.g. a publish might be down for restart).

If you want to enforce that the Akamai invalidation agent is triggered after the other replication happened, you have to run all activation through a workflow, and use synchronous replication to replicate to the publishs; in the next you can invoke the Akamai invalidation agent. But imagine the case when a publish is down; then your complete replication is blocked!

I solve this problem typically by not invalidating Akamai at all, but use TTL-based expiration on Akamai. You will deliver outdated content, but delivering 10 minute old content is typically not a problem.

Jörg

View solution in original post