On Thu, Jan 8, 2009 at 8:25 PM, harinair <[email protected]> wrote: > > Claus: > > Thanks once again - I will do that. So that my interceptor is called only > once. > > Do you think it is a good idea to add this shutdown hook to the Main.main()? > In that I can remove my main() and the HangUpInterceptor. I can also make > that modification and submit. I think I have to sign the Apache Development > agreement or something? I will do that too. Yeah that is a nice place then its added at the beginning.
See contributing http://activemq.apache.org/camel/contributing.html For submitting patches you dont need to sign the Apache CLA. Just remember to tick [x] in the grant ASF license when you attach a file to the ticket in JIRA. > > PS: I just noticed that the DEAD LETTER CHANNEL Wiki page seems to be > updated incorrectly. The new section you added is missing. Take a look. The static wiki pages takes some time before they are updated with the latest changes. PS: I am about to commit the onRedelivery feature in Camel 1.5.1 so it will be there out-of-the-box in the future release. > > Regards, > Hari Gangadharan > > > > Claus Ibsen-2 wrote: >> >> On Thu, Jan 8, 2009 at 1:53 AM, harinair <[email protected]> wrote: >>> >>> Thanks a lot for the quick reply. >>> >>> I read your wiki writeup. Doesn't that make the interceptor run on all >>> the >>> subsequent pipelines if the Redelivered flag is not set to null by the >>> Interceptor? Is it OK to set the Redelivered Flag to null? Is that used >>> by >>> any other Camel components? >> Hi yeah I think you can clear the flag after you have done your custom >> processing, so it wont intercept it again. >> Camel should readd if it fails on the next attempt of redelivery. Good >> idea. >> >> No the flag is for end users to inspect, to notice if the exchange is >> being redeliveried. It's not used by other components. >> >> But I will see if I can create a better solution with a nicer >> configuration using DLC directly or onException, >> >> >>> >>> >>> For stopping Camel gracefully - I did something like this: >>> in my main(): >>> >>> >>>> org.apache.camel.spring.Main main = new >>>> org.apache.camel.spring.Main(); >>>> HangUpInterceptor interceptor = new HangUpInterceptor(main); >>>> Runtime.getRuntime().addShutdownHook(interceptor); >>>> main.start(); >>>> >>> >>> I also added a HangUpInterceptor: >>> >>> >>>> public class HangUpInterceptor extends Thread { >>>> >>>> Log log = LogFactory.getLog(this.getClass()); >>>> Main main; >>>> >>>> public HangUpInterceptor(Main main) { >>>> this.main = main; >>>> } >>>> >>>> public void run() { >>>> log.info("Recieved hang up - stopping Camel."); >>>> try { >>>> main.stop(); >>>> } catch (Exception ex) { >>>> log.warn("Failure stopping Camel", ex); >>>> } >>>> } >>>> } >>>> >>> >>> Now the process goes down gracefully on a kill -HUP. >> Yeah I thought of a shutdown hook to stop Camel. That should do the trick. >> >> >>> >>> Regards, >>> Hari Gangadharan >>> >>> >>> >>> Claus Ibsen-2 wrote: >>>> >>>> Hi >>>> >>>> I have created a ticket to enhanced this in Camel >>>> https://issues.apache.org/activemq/browse/CAMEL-1234 >>>> >>>> I have also added a wiki sample with a solution. Albeit not as good as >>>> it will kick in even if the redelivery was a success as long the >>>> redelivery flag is set >>>> But it give the basic idea how to do it. >>>> http://cwiki.apache.org/confluence/display/CAMEL/Dead+Letter+Channel >>>> >>>> >>>> >>>> On Wed, Jan 7, 2009 at 11:52 AM, Claus Ibsen <[email protected]> >>>> wrote: >>>>> Hi >>>>> >>>>> I am working on some samples now for this. Will get back later. >>>>> >>>>> >>>>> On Wed, Jan 7, 2009 at 6:52 AM, Willem Jiang <[email protected]> >>>>> wrote: >>>>>> Hi, >>>>>> >>>>>> Please see my comment in the mail. >>>>>> >>>>>> harinair wrote: >>>>>>> Hi All: >>>>>>> >>>>>>> Thanks a lot for all the help I have received. We are nearing a >>>>>>> production >>>>>>> implementation of a Camel based messaging system! It was a great >>>>>>> experience, >>>>>>> I learned a lot and we saved a lot of time since I used Camel. >>>>>>> >>>>>>> I now have two questions: >>>>>>> >>>>>>> 1. I use org.apache.camel.spring.Main to start my standalone Camel >>>>>>> context. >>>>>>> Now how do I stop it? Till now I was killing it. Can I kill it? I >>>>>>> guess >>>>>>> it >>>>>>> may not be the right way since I have a feeling that the messages in >>>>>>> the >>>>>>> pipeline (especially the ones that are in Retry processing) is lost. >>>>>>> >>>>>> >>>>>> If you take a look at the org.apache.camel.spring.Main, you will find >>>>>> this Main class has start and stop methods, so you could write your >>>>>> own >>>>>> manager class which is based on the Spring main. >>>>>> >>>>>> >>>>>>> 2. I really need to get access to the Message between each retry. I >>>>>>> use >>>>>>> recipientList to forward message to different endpoints based on a >>>>>>> header. I >>>>>>> have also retry rules which make the Endpoint retry a specific number >>>>>>> of >>>>>>> times. In many cases I may have to get control and make some header >>>>>>> modification of the message before each retry. I could not find any >>>>>>> good >>>>>>> docs on that. Is there any Strategy implementation I can use that can >>>>>>> get >>>>>>> control of the exchange before each retry? If that is not there >>>>>>> wouldn't it >>>>>>> be a good idea to provide a way to intercept messages before each >>>>>>> retry? >>>>>>> >>>>>> I think you need get to know some detail of the camel >>>>>> ErrorHandler[1][2] >>>>>> first, then you could write your own DeadLetterChannel[3][4] to add >>>>>> you >>>>>> what you need to control the exchange before retrying. >>>>>> >>>>>>> Thanks in advance, >>>>>>> Hari Gangadharan >>>>>>> >>>>>> >>>>>> [1]http://activemq.apache.org/camel/error-handling-in-camel.html >>>>>> [2]http://activemq.apache.org/camel/error-handler.html >>>>>> [3]http://activemq.apache.org/camel/dead-letter-channel.html >>>>>> [4]http://svn.apache.org/repos/asf/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java >>>>>> >>>>>> Willem >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> >>>>> /Claus Ibsen >>>>> Apache Camel Committer >>>>> Blog: http://davsclaus.blogspot.com/ >>>>> >>>> >>>> >>>> >>>> -- >>>> >>>> /Claus Ibsen >>>> Apache Camel Committer >>>> Blog: http://davsclaus.blogspot.com/ >>>> >>>> >>> >>> -- >>> View this message in context: >>> http://www.nabble.com/Two-questions%3A-Stopping-Camel-and-intercept-before-retry-tp21323127s22882p21343817.html >>> Sent from the Camel - Users mailing list archive at Nabble.com. >>> >>> >> >> >> >> -- >> >> /Claus Ibsen >> Apache Camel Committer >> Blog: http://davsclaus.blogspot.com/ >> >> > > -- > View this message in context: > http://www.nabble.com/Two-questions%3A-Stopping-Camel-and-intercept-before-retry-tp21323127s22882p21359117.html > Sent from the Camel - Users mailing list archive at Nabble.com. > > -- /Claus Ibsen Apache Camel Committer Blog: http://davsclaus.blogspot.com/
