How to set eternal in Camel cache component

Solution Verified - Updated -

Issue

  • We are currently using Camel's cache component to cache static data. There is no problem retrieving and setting the cache data. However the data that in the cache is getting lost after 15 or 16 minutes even after specifying eternal=true in the cache endpoint.
  • Code References:
public class CacheRouteBuilder extends RouteBuilder {

        @Override
    public void configure() throws Exception {
        // TODO Auto-generated method stub

        onException(Exception.class)
            .handled(true)
            .to("direct-vm:exceptionResponse");
        //ESB Service Cache Data        
        from("cache://ESBServiceCache?eternal=true")
            .to("mock:dummy");
        //Expects headers KEY and VALUE
        from("direct-vm:setCacheData")
            .log("Client save Request Recevied...")
            .beanRef("cacheSvcsImplBean", "setCacheData")
            .to("cache://ESBServiceCache");
        //Expects header KEY
        from("direct-vm:getCacheData")
            .log("Client Get Value Request Recevied...")
            .beanRef("cacheSvcsImplBean", "getCacheData")
            .to("cache://ESBServiceCache");     

    }
}

public void setCacheData(Exchange exchange) {
        LOG.info(" Inside setCacheData keyString >>>::<<<<<<< " + exchange.getIn().getHeader());
        String keyData = exchange.getIn().getHeader("KEY").toString();
        String valeData = exchange.getIn().getHeader("VALUE").toString();
        exchange.getIn().setHeader(CacheConstants.CACHE_OPERATION, CacheConstants.CACHE_OPERATION_ADD);
        exchange.getIn().setHeader(CacheConstants.CACHE_KEY, keyData);
        exchange.getIn().setBody(valeData);
    }

    public void getCacheData(Exchange exchange) {
        LOG.info(" Inside getCacheData keyString >>>::<<<<<<< " + exchange.getIn().getHeader());
        String keyValue = exchange.getIn().getHeader("KEY").toString(); 
        exchange.getIn().setBody(null);
        exchange.getIn().setHeader(CacheConstants.CACHE_OPERATION, CacheConstants.CACHE_OPERATION_GET);
        exchange.getIn().setHeader(CacheConstants.CACHE_KEY, keyValue);
    }

Environment

  • Red Hat JBoss Fuse
    • 6.2.0

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.

Current Customers and Partners

Log in for full access

Log In
Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.