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/18 11:59:17 UTC
svn commit: r1327435 - in /camel/trunk/camel-core/src:
main/java/org/apache/camel/component/seda/SedaConsumer.java
main/java/org/apache/camel/component/seda/SedaEndpoint.java
test/java/org/apache/camel/ContextTestSupport.java
Author: davsclaus
Date: Wed Apr 18 09:59:17 2012
New Revision: 1327435
URL: http://svn.apache.org/viewvc?rev=1327435&view=rev
Log:
CAMEL-5184: Added pollTimeout to seda endpoint. Lowered timeout during unit testing camel-core, to cut down about 100 secs.
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaConsumer.java
camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
camel/trunk/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaConsumer.java?rev=1327435&r1=1327434&r2=1327435&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaConsumer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaConsumer.java Wed Apr 18 09:59:17 2012
@@ -60,10 +60,12 @@ public class SedaConsumer extends Servic
private AsyncProcessor processor;
private ExecutorService executor;
private ExceptionHandler exceptionHandler;
+ private final int pollTimeout;
public SedaConsumer(SedaEndpoint endpoint, Processor processor) {
this.endpoint = endpoint;
this.processor = AsyncProcessorConverterHelper.convert(processor);
+ this.pollTimeout = endpoint.getPollTimeout();
}
@Override
@@ -144,7 +146,8 @@ public class SedaConsumer extends Servic
if (getEndpoint().getCamelContext().getStatus().isStarting()) {
LOG.trace("CamelContext is starting so skip polling");
try {
- Thread.sleep(1000);
+ // sleep at most 1 sec
+ Thread.sleep(Math.min(pollTimeout, 1000));
} catch (InterruptedException e) {
LOG.debug("Sleep interrupted, are we stopping? {}", isStopping() || isStopped());
}
@@ -155,7 +158,8 @@ public class SedaConsumer extends Servic
if (isSuspending() || isSuspended()) {
LOG.trace("Consumer is suspended so skip polling");
try {
- Thread.sleep(1000);
+ // sleep at most 1 sec
+ Thread.sleep(Math.min(pollTimeout, 1000));
} catch (InterruptedException e) {
LOG.debug("Sleep interrupted, are we stopping? {}", isStopping() || isStopped());
}
@@ -164,7 +168,8 @@ public class SedaConsumer extends Servic
Exchange exchange = null;
try {
- exchange = queue.poll(1000, TimeUnit.MILLISECONDS);
+ // use the end user configured poll timeout
+ exchange = queue.poll(pollTimeout, TimeUnit.MILLISECONDS);
if (exchange != null) {
try {
// send a new copied exchange with new camel context
@@ -310,7 +315,7 @@ public class SedaConsumer extends Servic
// submit needed number of tasks
int tasks = poolSize - taskCount.get();
- LOG.debug("Creating {} consumer tasks", tasks);
+ LOG.debug("Creating {} consumer tasks with poll timeout {} ms.", tasks, pollTimeout);
for (int i = 0; i < tasks; i++) {
executor.execute(this);
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java?rev=1327435&r1=1327434&r2=1327435&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java Wed Apr 18 09:59:17 2012
@@ -62,6 +62,7 @@ public class SedaEndpoint extends Defaul
private volatile MulticastProcessor consumerMulticastProcessor;
private volatile boolean multicastStarted;
private boolean blockWhenFull;
+ private int pollTimeout = 1000;
public SedaEndpoint() {
}
@@ -203,6 +204,15 @@ public class SedaEndpoint extends Defaul
this.multipleConsumers = multipleConsumers;
}
+ @ManagedAttribute
+ public int getPollTimeout() {
+ return pollTimeout;
+ }
+
+ public void setPollTimeout(int pollTimeout) {
+ this.pollTimeout = pollTimeout;
+ }
+
public boolean isSingleton() {
return true;
}
@@ -332,6 +342,16 @@ public class SedaEndpoint extends Defaul
}
@Override
+ protected void doStart() throws Exception {
+ super.doStart();
+
+ // special for unit testing where we can set a system property to make seda poll faster
+ // and therefore also react faster upon shutdown, which makes overall testing faster of the Camel project
+ String override = System.getProperty("CamelSedaPollTimeout", "" + getPollTimeout());
+ setPollTimeout(Integer.valueOf(override));
+ }
+
+ @Override
protected void doShutdown() throws Exception {
// notify component we are shutting down this endpoint
if (getComponent() != null) {
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java?rev=1327435&r1=1327434&r2=1327435&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java Wed Apr 18 09:59:17 2012
@@ -81,6 +81,9 @@ public abstract class ContextTestSupport
@Override
protected void setUp() throws Exception {
+ // make SEDA testing faster
+ System.setProperty("CamelSedaPollTimeout", "10");
+
if (!useJmx()) {
disableJMX();
} else {
@@ -129,6 +132,7 @@ public abstract class ContextTestSupport
}
stopCamelContext();
System.clearProperty(JmxSystemPropertyKeys.DISABLED);
+ System.clearProperty("CamelSedaPollTimeout");
}
/**