You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2009/06/29 12:51:03 UTC

svn commit: r789285 - in /camel/trunk/camel-core/src/main/java/org/apache/camel/impl: ConsumerCache.java ProducerCache.java

Author: davsclaus
Date: Mon Jun 29 10:51:03 2009
New Revision: 789285

URL: http://svn.apache.org/viewvc?rev=789285&view=rev
Log:
CAMEL-1771: Using a LRUCache to avoid growing in size forever for non singleton or unique producers

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java?rev=789285&r1=789284&r2=789285&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java Mon Jun 29 10:51:03 2009
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.impl;
 
-import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
@@ -24,6 +23,7 @@
 import org.apache.camel.FailedToCreateConsumerException;
 import org.apache.camel.IsSingleton;
 import org.apache.camel.PollingConsumer;
+import org.apache.camel.util.LRUCache;
 import org.apache.camel.util.ServiceHelper;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -36,7 +36,15 @@
 public class ConsumerCache extends ServiceSupport {
     private static final transient Log LOG = LogFactory.getLog(ConsumerCache.class);
 
-    private final Map<String, PollingConsumer> consumers = new HashMap<String, PollingConsumer>();
+    private final Map<String, PollingConsumer> consumers;
+
+    public ConsumerCache() {
+        this.consumers = new LRUCache<String, PollingConsumer>(1000);
+    }
+
+    public ConsumerCache(Map<String, PollingConsumer> cache) {
+        this.consumers = cache;
+    }
 
     public synchronized PollingConsumer getConsumer(Endpoint endpoint) {
         String key = endpoint.getEndpointUri();

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java?rev=789285&r1=789284&r2=789285&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java Mon Jun 29 10:51:03 2009
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.impl;
 
-import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
@@ -28,6 +27,7 @@
 import org.apache.camel.ProducerCallback;
 import org.apache.camel.ServicePoolAware;
 import org.apache.camel.spi.ServicePool;
+import org.apache.camel.util.LRUCache;
 import org.apache.camel.util.ServiceHelper;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -41,13 +41,19 @@
 public class ProducerCache extends ServiceSupport {
     private static final transient Log LOG = LogFactory.getLog(ProducerCache.class);
 
-    private final Map<String, Producer> producers = new HashMap<String, Producer>();
+    private final Map<String, Producer> producers;
     private final ServicePool<Endpoint, Producer> pool;
 
     // TODO: Have easy configuration of pooling in Camel
 
     public ProducerCache(ServicePool<Endpoint, Producer> producerServicePool) {
         this.pool = producerServicePool;
+        this.producers = new LRUCache<String, Producer>(1000);
+    }
+
+    public ProducerCache(ServicePool<Endpoint, Producer> producerServicePool, Map<String, Producer> cache) {
+        this.pool = producerServicePool;
+        this.producers = cache;
     }
 
     public Producer getProducer(Endpoint endpoint) {