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) {