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;
}