[
https://issues.apache.org/jira/browse/CAMEL-5601?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Xiaoli Ding updated CAMEL-5601:
-------------------------------
Description:
step1:add one route begin with Error handler component whose dead letter url is
"direct:b".
step2:add send route with without error handler component.
step3:add the deadLetterChannel with url:"direct:b"
the generated code are:
{noformat}
@Override
public void configure() throws Exception {
errorHandler(deadLetterChannel("direct:b"))
.from("timer:myTimer1?repeatCount=1")
.process(new org.apache.camel.Processor() {
public void
process(org.apache.camel.Exchange exchange)
throws Exception {
throw new
Exception("exception1");
}
}).id("cProcessor_1");
from("timer:myTimer2?repeatCount=1")
.routeId("Sender_cMessagingEndpoint_1")
.process(new org.apache.camel.Processor() {
public void
process(org.apache.camel.Exchange exchange)
throws Exception {
throw new
Exception("exception2");
}
}).id("cProcessor_3");
from("direct:b")
.routeId("toProcessStartRouteLevel_cMessagingEndpoint_4")
.process(new org.apache.camel.Processor() {
public void
process(org.apache.camel.Exchange exchange)
throws Exception {
Exception exception =
(Exception) exchange.getProperties().get("CamelExceptionCaught");
if(exception != null){
System.out.println("error message:" + exception.getMessage());
}
}
}).id("cProcessor_4");
}
{noformat}
when run it,error handler deal with first and second exception which throwed by
two route,the output is:
{noformat}
error message:exception2
error message:exception1
{noformat}
but expect deal with first exception,expect the output is:
{noformat}
error message:exception1
{noformat}
the whole class is in attachment(CamelTester.java)
was:
step1:add one route begin with Error handler component whose dead letter url is
"direct:b".
step2:add send route with without error handler component.
step3:add the deadLetterChannel with url:"direct:b"
the generated code are:
{noformat}
@Override
public void configure() throws Exception {
errorHandler(deadLetterChannel("direct:b")).from("timer:myTimer1?repeatCount=1")
.process(new org.apache.camel.Processor() {
public void process(
org.apache.camel.Exchange exchange)
throws Exception {
throw new Exception("i am in
start of route");
}
}).id("cProcessor_1");
from("timer:myTimer2?repeatCount=1")
.routeId("Sender_cMessagingEndpoint_1")
.process(new org.apache.camel.Processor() {
public void process(
org.apache.camel.Exchange exchange)
throws Exception {
throw new Exception("i am
isolate in the model");
}
}).id("cProcessor_3");
from("direct:b")
.routeId("toProcessStartRouteLevel_cMessagingEndpoint_4")
.process(new org.apache.camel.Processor() {
public void process(
org.apache.camel.Exchange exchange)
throws Exception {
System.out.println("it is route
level handler");
}
}).id("cProcessor_4");
}
{noformat}
when run it,error handler deal with first and second exception which throwed by
two route,the output is:
{noformat}
it is route level handler
it is route level handler
{noformat}
but expect deal with first exception,expect the output is:
{noformat}
it is route level handler
{noformat}
only one time.
the whole class is in attachment(CamelTester.java)
> Error handler level is wrong
> ----------------------------
>
> Key: CAMEL-5601
> URL: https://issues.apache.org/jira/browse/CAMEL-5601
> Project: Camel
> Issue Type: Bug
> Components: camel-core
> Affects Versions: 2.9.3
> Reporter: Xiaoli Ding
> Priority: Minor
> Attachments: CamelTester.java
>
>
> step1:add one route begin with Error handler component whose dead letter url
> is "direct:b".
> step2:add send route with without error handler component.
> step3:add the deadLetterChannel with url:"direct:b"
> the generated code are:
> {noformat}
> @Override
> public void configure() throws Exception {
> errorHandler(deadLetterChannel("direct:b"))
> .from("timer:myTimer1?repeatCount=1")
> .process(new org.apache.camel.Processor() {
> public void
> process(org.apache.camel.Exchange exchange)
> throws Exception {
> throw new
> Exception("exception1");
> }
> }).id("cProcessor_1");
> from("timer:myTimer2?repeatCount=1")
> .routeId("Sender_cMessagingEndpoint_1")
> .process(new org.apache.camel.Processor() {
> public void
> process(org.apache.camel.Exchange exchange)
> throws Exception {
> throw new
> Exception("exception2");
> }
> }).id("cProcessor_3");
> from("direct:b")
>
> .routeId("toProcessStartRouteLevel_cMessagingEndpoint_4")
> .process(new org.apache.camel.Processor() {
> public void
> process(org.apache.camel.Exchange exchange)
> throws Exception {
> Exception exception =
> (Exception) exchange.getProperties().get("CamelExceptionCaught");
> if(exception != null){
>
> System.out.println("error message:" + exception.getMessage());
> }
> }
> }).id("cProcessor_4");
> }
> {noformat}
> when run it,error handler deal with first and second exception which throwed
> by two route,the output is:
> {noformat}
> error message:exception2
> error message:exception1
> {noformat}
> but expect deal with first exception,expect the output is:
> {noformat}
> error message:exception1
> {noformat}
> the whole class is in attachment(CamelTester.java)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira