camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Claus Ibsen (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (CAMEL-5601) Error handler route level is wrong
Date Fri, 14 Sep 2012 11:12:07 GMT

     [ https://issues.apache.org/jira/browse/CAMEL-5601?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Claus Ibsen resolved CAMEL-5601.
--------------------------------

       Resolution: Not A Problem
    Fix Version/s: 2.11.0
         Assignee: Claus Ibsen

You have 2 routes each with a timer, that both sends a message, which is then forced to throw
an exception, each with their own caused message. The error handler is context scoped, and
handles the errors from both routes.

Bottom line.

You have 2 messages (one for each route). And the context scoped error handler, will handle
each message = why you see 2 in the log.
                
> Error handler route 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
>            Assignee: Claus Ibsen
>            Priority: Minor
>             Fix For: 2.11.0
>
>         Attachments: CamelTester.java
>
>
> step1:add one route begin with Error handler component whose dead letter url is "direct:b".
> step2:add second 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

Mime
View raw message