register several cacheEnpoint with different name -------------------------------------------------
Key: CAMEL-3473 URL: https://issues.apache.org/jira/browse/CAMEL-3473 Project: Camel Issue Type: Bug Affects Versions: 2.5.0 Reporter: skydjol When you declare in camel context <camel:endpoint id="cache1" uri="cache:cache1" /> <camel:endpoint id="cache2" uri="cache:cache2" /> <camel:endpoint id="cache3" uri="cache:cache3" /> CamelCacheProducer produce systematically in same cache because in CacheComponent, CacheConfiguration is modified by method createEndpoint {code:title=CamelCacheProducer.java|borderStyle=solid} public void process(Exchange exchange) throws Exception { if (LOG.isTraceEnabled()) { LOG.trace("Cache Name: " + config.getCacheName()); } if (cacheManager.cacheExists(config.getCacheName())) { if (LOG.isTraceEnabled()) { LOG.trace("Found an existing cache: " + config.getCacheName()); LOG.trace("Cache " + config.getCacheName() + " currently contains " + cacheManager.getCache(config.getCacheName()).getSize() + " elements"); } cache = cacheManager.getCache(config.getCacheName()); } else { cache = new Cache(config.getCacheName(), config.getMaxElementsInMemory(), config.getMemoryStoreEvictionPolicy(), config.isOverflowToDisk(), config.getDiskStorePath(), config.isEternal(), config.getTimeToLiveSeconds(), config.getTimeToIdleSeconds(), config.isDiskPersistent(), config.getDiskExpiryThreadIntervalSeconds(), null); cacheManager.addCache(cache); if (LOG.isDebugEnabled()) { LOG.debug("Added a new cache: " + cache.getName()); } } String key = exchange.getIn().getHeader(CacheConstants.CACHE_KEY, String.class); String operation = exchange.getIn().getHeader(CacheConstants.CACHE_OPERATION, String.class); if (operation == null) { throw new CacheException("Operation not specified in the message header [" + CacheConstants.CACHE_KEY + "]"); } if ((key == null) && (!operation.equalsIgnoreCase(CacheConstants.CACHE_OPERATION_DELETEALL))) { throw new CacheException("Cache Key is not specified in message header header or endpoint URL."); } performCacheOperation(exchange, operation, key); } {code} {code:title=CacheComponent.java|borderStyle=solid} public class CacheComponent extends DefaultComponent { private CacheConfiguration config; private CacheManagerFactory cacheManagerFactory = new CacheManagerFactory(); public CacheComponent() { config = new CacheConfiguration(); } public CacheComponent(CamelContext context) { super(context); config = new CacheConfiguration(); } @Override @SuppressWarnings("unchecked") protected Endpoint createEndpoint(String uri, String remaining, Map parameters) throws Exception { config.parseURI(new URI(uri)); CacheEndpoint cacheEndpoint = new CacheEndpoint(uri, this, config, cacheManagerFactory); setProperties(cacheEndpoint.getConfig(), parameters); return cacheEndpoint; } public CacheManagerFactory getCacheManagerFactory() { return cacheManagerFactory; } public void setCacheManagerFactory(CacheManagerFactory cacheManagerFactory) { this.cacheManagerFactory = cacheManagerFactory; } @Override protected void doStart() throws Exception { super.doStart(); ServiceHelper.startService(cacheManagerFactory); } @Override protected void doStop() throws Exception { ServiceHelper.stopService(cacheManagerFactory); super.doStop(); } } {code} The resolution could be in CacheComponent {code:title=CacheComponent.java|borderStyle=solid} @Override @SuppressWarnings("unchecked") protected Endpoint createEndpoint(String uri, String remaining, Map parameters) throws Exception { CacheConfiguration config = new CacheConfiguration(); config.parseURI(new URI(uri)); CacheEndpoint cacheEndpoint = new CacheEndpoint(uri, this, config, cacheManagerFactory); setProperties(cacheEndpoint.getConfig(), parameters); return cacheEndpoint; } {code} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.