Author: davsclaus
Date: Fri Apr 8 16:08:30 2011
New Revision: 1090316
URL: http://svn.apache.org/viewvc?rev=1090316&view=rev
Log:
CAMEL-3623: redelivery thread pool can be configured on error handler.
Added:
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncDeadLetterChannelExecutorServiceRefTest.java
- copied, changed from r1090254,
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncDeadLetterChannelTest.java
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/async/SpringAsyncDeadLetterChannelExecutorServiceRefTest.java
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/async/SpringAsyncDeadLetterChannelExecutorServiceRefTest.xml
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceStrategy.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelErrorHandlerFactoryBean.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerDefinition.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java?rev=1090316&r1=1090315&r2=1090316&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
Fri Apr 8 16:08:30 2011
@@ -56,7 +56,8 @@ public class DeadLetterChannelBuilder ex
DeadLetterChannel answer = new
DeadLetterChannel(routeContext.getCamelContext(), processor, getLogger(),
getOnRedelivery(), getRedeliveryPolicy(), getHandledPolicy(),
getExceptionPolicyStrategy(),
- getFailureProcessor(), getDeadLetterUri(),
isUseOriginalMessage(), getRetryWhilePolicy(routeContext.getCamelContext()));
+ getFailureProcessor(), getDeadLetterUri(),
isUseOriginalMessage(),
+ getRetryWhilePolicy(routeContext.getCamelContext()),
getExecutorServiceRef());
// configure error handler before we can use it
configure(answer);
return answer;
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java?rev=1090316&r1=1090315&r2=1090316&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
Fri Apr 8 16:08:30 2011
@@ -52,6 +52,7 @@ public class DefaultErrorHandlerBuilder
protected String deadLetterUri;
protected boolean useOriginalMessage;
protected boolean asyncDelayedRedelivery;
+ protected String executorServiceRef;
public DefaultErrorHandlerBuilder() {
}
@@ -59,7 +60,7 @@ public class DefaultErrorHandlerBuilder
public Processor createErrorHandler(RouteContext routeContext, Processor
processor) throws Exception {
DefaultErrorHandler answer = new
DefaultErrorHandler(routeContext.getCamelContext(), processor, getLogger(),
getOnRedelivery(), getRedeliveryPolicy(), getHandledPolicy(),
getExceptionPolicyStrategy(),
- getRetryWhilePolicy(routeContext.getCamelContext()));
+ getRetryWhilePolicy(routeContext.getCamelContext()),
getExecutorServiceRef());
// configure error handler before we can use it
configure(answer);
return answer;
@@ -165,6 +166,17 @@ public class DefaultErrorHandlerBuilder
}
/**
+ * Sets a reference to a thread pool to be used for redelivery.
+ *
+ * @param ref reference to a scheduled thread pool
+ * @return the builder.
+ */
+ public DefaultErrorHandlerBuilder executorServiceRef(String ref) {
+ setExecutorServiceRef(ref);
+ return this;
+ }
+
+ /**
* Sets whether the exchange should be marked as handled or not.
*
* @param handled handled or not
@@ -452,6 +464,14 @@ public class DefaultErrorHandlerBuilder
this.asyncDelayedRedelivery = asyncDelayedRedelivery;
}
+ public String getExecutorServiceRef() {
+ return executorServiceRef;
+ }
+
+ public void setExecutorServiceRef(String executorServiceRef) {
+ this.executorServiceRef = executorServiceRef;
+ }
+
protected Predicate createHandledPolicy() {
// should NOT be handled by default for default error handler
return
PredicateBuilder.toPredicate(ExpressionBuilder.constantExpression(false));
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceStrategy.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceStrategy.java?rev=1090316&r1=1090315&r2=1090316&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceStrategy.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceStrategy.java
Fri Apr 8 16:08:30 2011
@@ -166,9 +166,12 @@ public class DefaultExecutorServiceStrat
}
if (answer == null) {
- ThreadPoolProfile profile = getThreadPoolProfile(name);
+ ThreadPoolProfile profile =
getThreadPoolProfile(executorServiceRef);
if (profile != null) {
- int poolSize = profile.getPoolSize();
+ Integer poolSize = profile.getPoolSize();
+ if (poolSize == null) {
+ poolSize = getDefaultThreadPoolProfile().getPoolSize();
+ }
answer = newScheduledThreadPool(source, name, poolSize);
if (answer != null) {
LOG.debug("Looking up ScheduledExecutorService with ref:
{} and found a matching ThreadPoolProfile to create the
ScheduledExecutorService: {}",
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java?rev=1090316&r1=1090315&r2=1090316&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
Fri Apr 8 16:08:30 2011
@@ -46,11 +46,12 @@ public class DeadLetterChannel extends R
* @param deadLetterUri an optional uri for logging purpose
* @param useOriginalBodyPolicy should the original IN body be moved
to the dead letter queue or the current exchange IN body?
* @param retryWhile retry while
+ * @param executorServiceRef reference to a {@link
java.util.concurrent.ScheduledExecutorService} to be used for redelivery thread
pool. Can be <tt>null</tt>.
*/
public DeadLetterChannel(CamelContext camelContext, Processor output,
CamelLogger logger, Processor redeliveryProcessor, RedeliveryPolicy
redeliveryPolicy,
Predicate handledPolicy, ExceptionPolicyStrategy
exceptionPolicyStrategy, Processor deadLetter,
- String deadLetterUri, boolean
useOriginalBodyPolicy, Predicate retryWhile) {
- super(camelContext, output, logger, redeliveryProcessor,
redeliveryPolicy, handledPolicy, deadLetter, deadLetterUri,
useOriginalBodyPolicy, retryWhile);
+ String deadLetterUri, boolean
useOriginalBodyPolicy, Predicate retryWhile, String executorServiceRef) {
+ super(camelContext, output, logger, redeliveryProcessor,
redeliveryPolicy, handledPolicy, deadLetter, deadLetterUri,
useOriginalBodyPolicy, retryWhile, executorServiceRef);
setExceptionPolicy(exceptionPolicyStrategy);
}
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java?rev=1090316&r1=1090315&r2=1090316&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java
Fri Apr 8 16:08:30 2011
@@ -40,11 +40,12 @@ public class DefaultErrorHandler extends
* @param handledPolicy policy for handling failed exception
that are moved to the dead letter queue
* @param exceptionPolicyStrategy strategy for onException handling
* @param retryWhile retry while
+ * @param executorServiceRef reference to a {@link
java.util.concurrent.ScheduledExecutorService} to be used for redelivery thread
pool. Can be <tt>null</tt>.
*/
public DefaultErrorHandler(CamelContext camelContext, Processor output,
CamelLogger logger, Processor redeliveryProcessor,
RedeliveryPolicy redeliveryPolicy, Predicate
handledPolicy,
- ExceptionPolicyStrategy
exceptionPolicyStrategy, Predicate retryWhile) {
- super(camelContext, output, logger, redeliveryProcessor,
redeliveryPolicy, handledPolicy, null, null, false, retryWhile);
+ ExceptionPolicyStrategy
exceptionPolicyStrategy, Predicate retryWhile, String executorServiceRef) {
+ super(camelContext, output, logger, redeliveryProcessor,
redeliveryPolicy, handledPolicy, null, null, false, retryWhile,
executorServiceRef);
setExceptionPolicy(exceptionPolicyStrategy);
}
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java?rev=1090316&r1=1090315&r2=1090316&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java
Fri Apr 8 16:08:30 2011
@@ -36,7 +36,7 @@ public class LoggingErrorHandler extends
* @param exceptionPolicyStrategy strategy for onException handling
*/
public LoggingErrorHandler(CamelContext camelContext, Processor output,
CamelLogger logger, ExceptionPolicyStrategy exceptionPolicyStrategy) {
- super(camelContext, output, logger, null, new RedeliveryPolicy(),
null, exceptionPolicyStrategy, null);
+ super(camelContext, output, logger, null, new RedeliveryPolicy(),
null, exceptionPolicyStrategy, null, null);
}
@Override
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java?rev=1090316&r1=1090315&r2=1090316&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
Fri Apr 8 16:08:30 2011
@@ -50,6 +50,7 @@ import org.apache.camel.util.ServiceHelp
public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport
implements AsyncProcessor {
private static ScheduledExecutorService executorService;
+ protected final String executorServiceRef;
protected final CamelContext camelContext;
protected final Processor deadLetter;
protected final String deadLetterUri;
@@ -169,7 +170,7 @@ public abstract class RedeliveryErrorHan
public RedeliveryErrorHandler(CamelContext camelContext, Processor output,
CamelLogger logger, Processor redeliveryProcessor,
RedeliveryPolicy redeliveryPolicy, Predicate
handledPolicy, Processor deadLetter,
- String deadLetterUri, boolean
useOriginalMessagePolicy, Predicate retryWhile) {
+ String deadLetterUri, boolean
useOriginalMessagePolicy, Predicate retryWhile, String executorServiceRef) {
ObjectHelper.notNull(camelContext, "CamelContext", this);
ObjectHelper.notNull(redeliveryPolicy, "RedeliveryPolicy", this);
@@ -184,6 +185,7 @@ public abstract class RedeliveryErrorHan
this.handledPolicy = handledPolicy;
this.useOriginalMessagePolicy = useOriginalMessagePolicy;
this.retryWhilePolicy = retryWhile;
+ this.executorServiceRef = executorServiceRef;
}
public boolean supportTransacted() {
@@ -825,7 +827,14 @@ public abstract class RedeliveryErrorHan
// use a shared scheduler
if (executorService == null || executorService.isShutdown()) {
// camel context will shutdown the executor when it shutdown so no
need to shut it down when stopping
- executorService =
camelContext.getExecutorServiceStrategy().newScheduledThreadPool(this,
"ErrorHandlerRedeliveryTask");
+ if (executorServiceRef != null) {
+ executorService =
camelContext.getExecutorServiceStrategy().lookupScheduled(this,
"ErrorHandlerRedeliveryTask", executorServiceRef);
+ if (executorService == null) {
+ throw new IllegalArgumentException("ExecutorServiceRef " +
executorServiceRef + " not found in registry.");
+ }
+ } else {
+ executorService =
camelContext.getExecutorServiceStrategy().newScheduledThreadPool(this,
"ErrorHandlerRedeliveryTask");
+ }
}
}
Copied:
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncDeadLetterChannelExecutorServiceRefTest.java
(from r1090254,
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncDeadLetterChannelTest.java)
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncDeadLetterChannelExecutorServiceRefTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncDeadLetterChannelExecutorServiceRefTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncDeadLetterChannelTest.java&r1=1090254&r2=1090316&rev=1090316&view=diff
==============================================================================
---
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncDeadLetterChannelTest.java
(original)
+++
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncDeadLetterChannelExecutorServiceRefTest.java
Fri Apr 8 16:08:30 2011
@@ -20,16 +20,17 @@ import org.apache.camel.CamelExecutionEx
import org.apache.camel.ContextTestSupport;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
-import org.apache.camel.WaitForTaskToComplete;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.impl.ThreadPoolProfileSupport;
+import org.apache.camel.spi.ThreadPoolProfile;
/**
* Unit test to verify that error handling using async() also works as
expected.
*
* @version
*/
-public class AsyncDeadLetterChannelTest extends ContextTestSupport {
+public class AsyncDeadLetterChannelExecutorServiceRefTest extends
ContextTestSupport {
@Override
public boolean isUseRouteBuilder() {
@@ -40,7 +41,12 @@ public class AsyncDeadLetterChannelTest
context.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
-
errorHandler(deadLetterChannel("mock:dead").maximumRedeliveries(2).redeliveryDelay(0).logStackTrace(false).handled(false));
+ ThreadPoolProfile profile = new
ThreadPoolProfileSupport("myAsyncPool");
+ profile.setPoolSize(5);
+
context.getExecutorServiceStrategy().registerThreadPoolProfile(profile);
+
+ errorHandler(deadLetterChannel("mock:dead")
+
.maximumRedeliveries(2).redeliveryDelay(0).logStackTrace(false).handled(false).executorServiceRef("myAsyncPool"));
from("direct:in")
.threads(2)
Modified:
camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelErrorHandlerFactoryBean.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelErrorHandlerFactoryBean.java?rev=1090316&r1=1090315&r2=1090316&view=diff
==============================================================================
---
camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelErrorHandlerFactoryBean.java
(original)
+++
camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelErrorHandlerFactoryBean.java
Fri Apr 8 16:08:30 2011
@@ -55,6 +55,8 @@ public class CamelErrorHandlerFactoryBea
@XmlAttribute
private String retryWhileRef;
@XmlAttribute
+ private String executorServiceRef;
+ @XmlAttribute
private String redeliveryPolicyRef;
@XmlElement
private RedeliveryPolicyDefinition redeliveryPolicy;
@@ -86,6 +88,9 @@ public class CamelErrorHandlerFactoryBea
if (retryWhileRef != null) {
handler.setRetryWhileRef(retryWhileRef);
}
+ if (executorServiceRef != null) {
+ handler.setExecutorServiceRef(executorServiceRef);
+ }
} else if (errorHandler instanceof LoggingErrorHandlerBuilder) {
LoggingErrorHandlerBuilder handler = (LoggingErrorHandlerBuilder)
errorHandler;
if (level != null) {
Modified:
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerDefinition.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerDefinition.java?rev=1090316&r1=1090315&r2=1090316&view=diff
==============================================================================
---
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerDefinition.java
(original)
+++
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerDefinition.java
Fri Apr 8 16:08:30 2011
@@ -55,7 +55,10 @@ public class ErrorHandlerDefinition exte
private String retryWhileRef;
@XmlAttribute
private String redeliveryPolicyRef;
+ @XmlAttribute
+ private String executorServiceRef;
@XmlElement
private RedeliveryPolicyDefinition redeliveryPolicy;
+
}
Modified:
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.java?rev=1090316&r1=1090315&r2=1090316&view=diff
==============================================================================
---
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.java
(original)
+++
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.java
Fri Apr 8 16:08:30 2011
@@ -145,6 +145,11 @@ public class ErrorHandlerDefinitionParse
throw new IllegalArgumentException("Attribute redeliveryPolicyRef
is not supported by error handler type: "
+ type.name() + ", in error handler with id: " + id);
}
+ String executorServiceRef = element.getAttribute("executorServiceRef");
+ if (ObjectHelper.isNotEmpty(executorServiceRef) &&
(type.equals(ErrorHandlerType.LoggingErrorHandler) ||
type.equals(ErrorHandlerType.NoErrorHandler))) {
+ throw new IllegalArgumentException("Attribute executorServiceRef
is not supported by error handler type: "
+ + type.name() + ", in error handler with id: " + id);
+ }
}
private void parserRefAttribute(Element element, String attributeName,
String propertyName, BeanDefinitionBuilder builder) {
Modified:
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java?rev=1090316&r1=1090315&r2=1090316&view=diff
==============================================================================
---
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java
(original)
+++
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java
Fri Apr 8 16:08:30 2011
@@ -54,11 +54,12 @@ public class TransactionErrorHandler ext
* @param exceptionPolicyStrategy strategy for onException handling
* @param transactionTemplate the transaction template
* @param retryWhile retry while
+ * @param executorServiceRef reference to a {@link
java.util.concurrent.ScheduledExecutorService} to be used for redelivery thread
pool. Can be <tt>null</tt>.
*/
public TransactionErrorHandler(CamelContext camelContext, Processor
output, CamelLogger logger, Processor redeliveryProcessor,
RedeliveryPolicy redeliveryPolicy,
Predicate handledPolicy, ExceptionPolicyStrategy exceptionPolicyStrategy,
- TransactionTemplate transactionTemplate,
Predicate retryWhile) {
- super(camelContext, output, logger, redeliveryProcessor,
redeliveryPolicy, handledPolicy, null, null, false, retryWhile);
+ TransactionTemplate transactionTemplate,
Predicate retryWhile, String executorServiceRef) {
+ super(camelContext, output, logger, redeliveryProcessor,
redeliveryPolicy, handledPolicy, null, null, false, retryWhile,
executorServiceRef);
setExceptionPolicy(exceptionPolicyStrategy);
this.transactionTemplate = transactionTemplate;
this.transactionKey =
ObjectHelper.getIdentityHashCode(transactionTemplate);
Modified:
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java?rev=1090316&r1=1090315&r2=1090316&view=diff
==============================================================================
---
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
(original)
+++
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
Fri Apr 8 16:08:30 2011
@@ -112,7 +112,7 @@ public class TransactionErrorHandlerBuil
TransactionErrorHandler answer = new
TransactionErrorHandler(routeContext.getCamelContext(), processor,
getLogger(), getOnRedelivery(), getRedeliveryPolicy(),
getHandledPolicy(),
- getExceptionPolicyStrategy(), transactionTemplate,
getRetryWhilePolicy(routeContext.getCamelContext()));
+ getExceptionPolicyStrategy(), transactionTemplate,
getRetryWhilePolicy(routeContext.getCamelContext()), getExecutorServiceRef());
// configure error handler before we can use it
configure(answer);
return answer;
Added:
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/async/SpringAsyncDeadLetterChannelExecutorServiceRefTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/async/SpringAsyncDeadLetterChannelExecutorServiceRefTest.java?rev=1090316&view=auto
==============================================================================
---
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/async/SpringAsyncDeadLetterChannelExecutorServiceRefTest.java
(added)
+++
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/async/SpringAsyncDeadLetterChannelExecutorServiceRefTest.java
Fri Apr 8 16:08:30 2011
@@ -0,0 +1,45 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spring.processor.async;
+
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.spring.SpringTestSupport;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+/**
+ *
+ */
+public class SpringAsyncDeadLetterChannelExecutorServiceRefTest extends
SpringTestSupport {
+
+ @Override
+ protected AbstractXmlApplicationContext createApplicationContext() {
+ return new
ClassPathXmlApplicationContext("org/apache/camel/spring/processor/async/SpringAsyncDeadLetterChannelExecutorServiceRefTest.xml");
+ }
+
+ public void testAsyncDLCExecutorServiceRefTest() throws Exception {
+ getMockEndpoint("mock:foo").expectedBodiesReceived("Hello World");
+
+ MockEndpoint mock = getMockEndpoint("mock:dead");
+ mock.expectedMessageCount(1);
+
+ template.sendBody("direct:in", "Hello World");
+
+ assertMockEndpointsSatisfied();
+ }
+
+}
Added:
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/async/SpringAsyncDeadLetterChannelExecutorServiceRefTest.xml
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/async/SpringAsyncDeadLetterChannelExecutorServiceRefTest.xml?rev=1090316&view=auto
==============================================================================
---
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/async/SpringAsyncDeadLetterChannelExecutorServiceRefTest.xml
(added)
+++
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/async/SpringAsyncDeadLetterChannelExecutorServiceRefTest.xml
Fri Apr 8 16:08:30 2011
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd
+ ">
+
+ <camelContext xmlns="http://camel.apache.org/schema/spring">
+
+ <errorHandler id="dlc" type="DeadLetterChannel"
deadLetterUri="mock:dead" executorServiceRef="myAsyncPool">
+ <redeliveryPolicy maximumRedeliveries="2" redeliveryDelay="0"
logStackTrace="false" asyncDelayedRedelivery="true"/>
+ </errorHandler>
+
+ <threadPoolProfile id="myAsyncPool" poolSize="5"/>
+
+ <route errorHandlerRef="dlc">
+ <from uri="direct:in"/>
+ <threads poolSize="2">
+ <to uri="mock:foo"/>
+ <throwException ref="damn"/>
+ </threads>
+ </route>
+
+ </camelContext>
+
+ <bean id="damn" class="java.lang.IllegalArgumentException">
+ <constructor-arg index="0" value="Forced by unit test"/>
+ </bean>
+
+</beans>