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 2012/04/05 14:28:06 UTC

svn commit: r1309819 - in /camel/trunk/components/camel-jms/src: main/java/org/apache/camel/component/jms/ main/java/org/apache/camel/component/jms/reply/ test/java/org/apache/camel/component/jms/

Author: davsclaus
Date: Thu Apr  5 12:28:05 2012
New Revision: 1309819

URL: http://svn.apache.org/viewvc?rev=1309819&view=rev
Log:
CAMEL-5141: camel-jms - Allow to configure frequency of timeout checker when doing request/reply over JMS

Added:
    camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTimeoutCheckerIntervalTest.java
      - copied, changed from r1309668, camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTimeoutTest.java
Modified:
    camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
    camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
    camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
    camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyManagerSupport.java

Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java?rev=1309819&r1=1309818&r2=1309819&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java (original)
+++ camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java Thu Apr  5 12:28:05 2012
@@ -332,6 +332,10 @@ public class JmsComponent extends Defaul
         getConfiguration().setRequestTimeout(requestTimeout);
     }
 
+    public void setRequestTimeoutCheckerInterval(long requestTimeoutCheckerInterval) {
+        getConfiguration().setRequestTimeoutCheckerInterval(requestTimeoutCheckerInterval);
+    }
+
     public void setTransferExchange(boolean transferExchange) {
         getConfiguration().setTransferExchange(transferExchange);
     }

Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java?rev=1309819&r1=1309818&r2=1309819&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java (original)
+++ camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java Thu Apr  5 12:28:05 2012
@@ -87,6 +87,7 @@ public class JmsConfiguration implements
     private long recoveryInterval = -1;
     private long receiveTimeout = -1;
     private long requestTimeout = 20000L;
+    private long requestTimeoutCheckerInterval = 1000L;
     private int idleTaskExecutionLimit = 1;
     private int idleConsumerLimit = 1;
     private int maxConcurrentConsumers;
@@ -1060,7 +1061,7 @@ public class JmsConfiguration implements
 
     /**
      * Factory method which which allows derived classes to customize the lazy
-     * transcationManager creation
+     * transaction manager creation
      */
     protected PlatformTransactionManager createTransactionManager() {
         JmsTransactionManager answer = new JmsTransactionManager();
@@ -1111,6 +1112,17 @@ public class JmsConfiguration implements
         this.requestTimeout = requestTimeout;
     }
 
+    public long getRequestTimeoutCheckerInterval() {
+        return requestTimeoutCheckerInterval;
+    }
+
+    /**
+     * Sets the interval in milliseconds how often the request timeout checker should run.
+     */
+    public void setRequestTimeoutCheckerInterval(long requestTimeoutCheckerInterval) {
+        this.requestTimeoutCheckerInterval = requestTimeoutCheckerInterval;
+    }
+
     public String getReplyTo() {
         return replyToDestination;
     }

Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java?rev=1309819&r1=1309818&r2=1309819&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java (original)
+++ camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java Thu Apr  5 12:28:05 2012
@@ -650,6 +650,11 @@ public class JmsEndpoint extends Default
         return getConfiguration().getRequestTimeout();
     }
 
+    @ManagedAttribute
+    public long getRequestTimeoutCheckerInterval() {
+        return getConfiguration().getRequestTimeoutCheckerInterval();
+    }
+
     public TaskExecutor getTaskExecutor() {
         return getConfiguration().getTaskExecutor();
     }

Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyManagerSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyManagerSupport.java?rev=1309819&r1=1309818&r2=1309819&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyManagerSupport.java (original)
+++ camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyManagerSupport.java Thu Apr  5 12:28:05 2012
@@ -205,8 +205,10 @@ public abstract class ReplyManagerSuppor
         ObjectHelper.notNull(executorService, "executorService", this);
         ObjectHelper.notNull(endpoint, "endpoint", this);
 
-        // purge for timeout every second
-        correlation = new CorrelationTimeoutMap(executorService, 1000);
+        // timeout map to use for purging messages which have timed out, while waiting for an expected reply
+        // when doing request/reply over JMS
+        log.trace("Using timeout checker interval with {} millis", endpoint.getRequestTimeoutCheckerInterval());
+        correlation = new CorrelationTimeoutMap(executorService, endpoint.getRequestTimeoutCheckerInterval());
         ServiceHelper.startService(correlation);
 
         // create JMS listener and start it

Copied: camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTimeoutCheckerIntervalTest.java (from r1309668, camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTimeoutTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTimeoutCheckerIntervalTest.java?p2=camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTimeoutCheckerIntervalTest.java&p1=camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTimeoutTest.java&r1=1309668&r2=1309819&rev=1309819&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTimeoutTest.java (original)
+++ camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTimeoutCheckerIntervalTest.java Thu Apr  5 12:28:05 2012
@@ -24,12 +24,13 @@ import org.apache.camel.RuntimeCamelExce
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
+
 import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
 
 /**
  * Unit test for testing request timeout with a InOut exchange.
  */
-public class JmsRouteTimeoutTest extends CamelTestSupport {
+public class JmsRouteTimeoutCheckerIntervalTest extends CamelTestSupport {
 
     @Test
     public void testTimeout() throws Exception {
@@ -55,7 +56,10 @@ public class JmsRouteTimeoutTest extends
         CamelContext camelContext = super.createCamelContext();
 
         ConnectionFactory connectionFactory = CamelJmsTestHelper.createConnectionFactory();
-        camelContext.addComponent("activemq", jmsComponentAutoAcknowledge(connectionFactory));
+        JmsComponent activmq = jmsComponentAutoAcknowledge(connectionFactory);
+        // check 4 times per second
+        activmq.setRequestTimeoutCheckerInterval(250);
+        camelContext.addComponent("activemq", activmq);
 
         return camelContext;
     }