com.atlassian.confluence.content.render.xhtml.migration.exceptions.UnknownMacroMigrationException: The macro 'next_previous_link3' is unknown.

Cache Mediator

When a message comes to the Cache mediator, it checks whether an equivalent message has been seen before based on message hashes. If such a message has existed before, the Cache mediator executes the onCacheHit sequence (if specified), fetches the cached response, and prepares the ESB to send the response. The onCacheHit sequence can send back the response message using a Send Mediator. If the onCacheHit sequence is not specified, the cached response is sent back to the requester.

The Cache mediator does not cache the response status code of the HTTP response in the cache table. Instead, it returns the "200 OK" status code on a cache hit, which is the default request success status response. If you want to return a different status code when the request gets a cache hit, you can update the response status code in the onCacheHit sequence.

The Cache mediator is a content-aware mediator.



Syntax

<cache [id="string"] [hashGenerator="class"] [timeout="seconds"] [scope=(per-host | per-mediator)]
     collector=(true | false) [maxMessageSize="in-bytes"]>
   <onCacheHit [sequence="key"]>
     (mediator)+
   </onCacheHit>?
   <implementation type=(memory | disk) maxSize="int"/>
</cache>



UI Configuration

Click on the relevant tab to view the UI configuration depending on whether the cache type of the cache mediator is Finder or Collector.

Note

You can configure the mediator using XML. Click switch to source view in the Mediator window.

Examples

  1. In this example, the first message sent to the endpoint, and the cache is not hit. The Cache mediator configured in the Out sequence caches the response to this message. When a similar message is sent to the second time, the previous response will be directly fetched from the cache and sent to the requester. This happens because no onCacheHit sequence is defined.

    <sequence name="SEQ_CACHE">
      <in>
        <cache scope="per-host"
          collector="false"
          hashGenerator="org.wso2.carbon.mediator.cache.digest.DOMHASHGenerator"
          timeout="20">
          <implementation type="memory" maxSize="100"/>
        </cache>
    
        <send>
          <endpoint>
            <address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
          </endpoint>
        </send>
      </in>
    
      <out>
        <cache scope="per-host" collector="true"/>
        <send/>
      </out>
    </sequence>
  2. According to this example configuration, if you define a cache collector using the cache mediator in the in sequence, you need to add the RESPONSE property to consider the message as a response message.

    <api xmlns="http://ws.apache.org/ns/synapse" name="cacheAPI" context="/cache">
       <resource methods="POST GET" uri-template="/headerapi/*">
          <inSequence>
             <cache id="cache-sample" scope="per-host" collector="false" hashGenerator="org.wso2.carbon.mediator.cache.digest.DOMHASHGenerator" timeout="5000">
                <implementation type="memory" maxSize="1000"/>
             </cache>
             <call>
                <endpoint>
                   <address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                </endpoint>
             </call>
             <property name="RESPONSE" value="true" scope="default" type="STRING"/>
             <enrich>
                <source type="inline" clone="true">
                   <ax21:newvalue xmlns:ax21="http://services.samples/xsd">testsamplevalue                </ax21:newvalue>
                </source>
                <target xmlns:ax21="http://services.samples/xsd" xmlns:ns="http://services.samples" action="sibling" xpath="//ns:getQuoteResponse/ns:return/ax21:volume"/>
             </enrich>
             <cache scope="per-host" collector="true"/>
             <respond/>
          </inSequence>
       </resource>
    </api>                

Samples

Sample 420: Simple Cache Implemented on ESB for the Actual Service.

Invalidating Cached Responses Remotely

You can invalidate all cached response remotely by using any JMX monitoring tool such as Jconsole using the exposed MBeans. You can use the Invalidatemediatocache()operation of the org.wso2.carbon.mediation MBean for this as shown below.

JMX monitoring through JConsole

com.atlassian.confluence.content.render.xhtml.migration.exceptions.UnknownMacroMigrationException: The macro 'next_previous_links2' is unknown.