Saturday, January 20, 2018

How to use Re-Fetching Flush Agent in Adobe Experience Manager(AEM)

This tutorial explains the details on AEM re-fetching flush agent and how to use to flush the content through re-fetching flush agent.

Re-Fetching Flush Agent

With regular flush agent, the agent flush the cache and the flushed content would only be retrieved from the publisher again after first time requested. This will create issue if the multiple parallel requests hit the dispatcher after flush as the new page is not yet cached in the dispatcher.

The re-fetching flush agent in AEM make sure the pages are requested and cached on the dispatcher immediately after replication.

Using a re-fetching flush agent allows to pre-populate the cache as it instructs the dispatcher to retrieve the pages from publish instance immediately after the flush occurs. Re-fetching flush agent works same as normal flush agent in dispatcher, additionally dispatcher sends a GET request for the content paths in the flush requests to fetch the content and update the cache.

Re-fetching flush is slow when activating lot of pages, enable the re-fetching only for specific content that is frequently accessed and activated.

The re-fetching feature is available in dispatcher since version 4.0.9

Configure Re-Fetching Flush agent

As a first step, develop a content builder that will send the flush URL’s into the flush request part of request body. The flush agent uses POST method to invoke dispatcher flush.

The sample content builder bundle can be downloaded from the below URL

The agent bundle is tested with AEM as Cloud Service Development Instance with aem-sdk-api dependency, the same can be modified to use uber-jar dependency.

Install the bundle to publisher as configuring the flush agent in the publish server is recommended— mvn clean install -PautoInstallBundle -Daem.port=4503

Now new serialization type “Re-fetch Dispatcher flush” is enabled while configuring the agents.

Define a re-fetching flush agent in publisher with required details, the process is same as normal flush agent with some additional configurations

In Settings tab select the “Serialization Type” as “Re-Fetch Dispatcher Flush”

In Extended tab add POST as the HTTP Method for sending the request to Dispatcher

In AEM Cloud Service, content is published using Sling Content Distribution . The replication agents used in previous versions of AEM are no longer used or provided, configure the required forward agent configurations to distribute the changes.

Refer the below URL for details on configuring forward distribution

Now distribute/activate a page and verify the Re-Fetching Flush Agent, the activated page is updated in dispatcher before first time requesting the page.

The re-fetching flush agent will helps to improve the performance of the frequently used critical pages, be cautious while using this feature as so many page activation will impact the AEM performance.

1 comment:

  1. Thanks for this post - it is very interesting. I had a question. In the Agent Settings you check "Ignore Default". But when you activate the content, the agent DOES fire. I expected that it would not fire, because of the Ignore Default setting. Maybe I have misunderstood what that setting does. Can you explain this please?