camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Claus Ibsen" ...@silverbullet.dk>
Subject RE: camel 1.4 redelivery issue
Date Wed, 13 Aug 2008 14:08:44 GMT
Ah 

I think the exception() stuff will override the DLC. However you can set all the options on
the DLC and *not* on the exception type. But then its global for all exceptions.

I have added the JIRA to add it in Camel 1.5.


Med venlig hilsen
 
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk

-----Original Message-----
From: Claus Ibsen [mailto:ci@silverbullet.dk] 
Sent: 13. august 2008 15:55
To: camel-user@activemq.apache.org
Subject: RE: camel 1.4 redelivery issue

Hi

Ah it's exposed on the DLC so you can set it on the DLC. 
     deadLetterChannel().maximumRedeliveryDelay(9999999L);

And then you original code (without the maximumRedeliveryDelay)
exception(java.net.SocketException.class)
		.maximumRedeliveries(5)
		.useExponentialBackOff()
		.initialRedeliveryDelay(300000)
		.backOffMultiplier(2.0)
		.intercept(new CustomDelegateProcessor(ErrorConstants.SOCKET_ERROR));


And then you can have the other settings per redelivery policy you have configured. However
then it's a global setting and not curtom per. Redelivery policy (probably a missing in Camel
1.4). I will add a JIRA for this.



Med venlig hilsen
 
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk

-----Original Message-----
From: pratibhaG [mailto:pratibha.ghogale@in2m.com] 
Sent: 13. august 2008 15:29
To: camel-user@activemq.apache.org
Subject: RE: camel 1.4 redelivery issue


I need to have the time more than 60 seconds, as if an application is down,
reason can be anything and it may take more than even half an hour. If I hit
it every 60 seconds it will unnecessarily create traffic.

I want to do something like this:
exception(java.net.SocketException.class)
		.maximumRedeliveries(5)
		.useExponentialBackOff()
		.initialRedeliveryDelay(300000)
		.backOffMultiplier(2.0)
                .maximumRedeliveryDelay(99999999L)                 
		.intercept(new CustomDelegateProcessor(ErrorConstants.SOCKET_ERROR));
    	  

If I have not misunderstood the camel 1.4 source code, class
RedeliveryPolicy has the default setting for  maximumRedeliveryDelay to 60
seconds.

It also has a setter method for changing it. So this class has everything
and I want to use it by writing some custom code as follows:

1)Extend class org.apache.camel.model.ExceptionType in custom say class
CustomExceptionType
2)CustomExceptionType will have a method 

public ExceptionType maximumRedeliveryDelay(long maximumRedeliveryDelay) {

       
getOrCreateRedeliveryPolicy().maximumRedeliveryDelay(maximumRedeliveryDelay);

        return this;

}

3)CustomExceptionType will override following method method 
protected RedeliveryPolicyType getOrCreateRedeliveryPolicy() {

        if (redeliveryPolicy == null) {

            redeliveryPolicy = new CustomRedeliveryPolicyType();

        }

        return redeliveryPolicy;

    }


3)I also have to extend class org.apache.camel.model.RedeliveryPolicyType to
have maximumRedeliveryDelay.
I will create class CustomRedeliveryPolicyType which will extend
org.apache.camel.model.RedeliveryPolicyType and have setters and getters for
maximumRedeliveryDelay.

What do you think about this solution?

I don't know how can I tell my Routing java (DSL) to use my
CustomExceptionType rather than org.apache.camel.model.ExceptionType as
currently it uses org.apache.camel.model.ExceptionType by default.

How to do this? Please help.
-- 
View this message in context: http://www.nabble.com/camel-1.4-redelivery-issue-tp18960138s22882p18963077.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Mime
View raw message