Cache Scope
As the name suggests Cache scope is used to store or cache the result for frequently used request. Imagine a Product API GET method which can accept product # and provide product detail in response. API can fetch the product information from external Data Source which can be DB, File or any third part service. This can be and time consuming and expensive calls in case most of the time product information doesn’t change frequently. To increase the performance or throughput of an API Caching is introduced.
Scope will save the data against the key defined in scope and reuse the cache result instead of processing the actual logic.
As a POC we will create two flows within mule application
- nocache – flow will accept productid as header input and provide the result
- cache – flow will accept the productid and used it as key for Cache scope and provide the result either from cache or form actual implementation.
Create http listener with path as nocache
Add logger and payload transformation with 5 second wait
%dw 2.0 import * from dw::Runtime output application/json --- { "product id": attributes.headers."productid", "product desc": "product description" } wait 5000
Now if we run this application and test it through SOAP UI, we can see API took good 5 seconds to provide proper response
Add a new flow with http listener with path as cache
Add same activities but in Cache Scope
Configure Cache Scope
Select “Reference to a Strategy” and click add
Select key expression and provide key against which we want to save the result
We can also see Object Store reference – this is need to define for how long you want to cache the result. Max no of results you want to cache and all.
Configure Object Store – more detail on Object Store
Add Object Store module if not available in Pallet – more detail on adding module to pallet
Go to Global settings and select Object store
Define the Object Store settings
This will create Object store configuration
Will go back to Cache scope configuration and select the Object Store configuration
Click Ok
Run the application and test the same
For first time for productid – 1234 API took > 5seconds to return the response
Now if we test again then we can see the response is coming in 30 mille seconds
So Cache activity will keep on adding the result/payload against each key and use it accordingly.
Sample application – cache-sample
Sample SOAP UI project – Cache-Scope-Sample-soapui-project