Hi Doug

Great looks like you got the grip with Camel now.

Splitting the route is a great solution.
And actually it does make the routing easier to read ;)


/Claus Ibsen
Apache Camel Committer
Blog: http://davsclaus.blogspot.com/



On Sat, Dec 6, 2008 at 5:24 PM, dougly <[EMAIL PROTECTED]> wrote:
>
> Hi Claus,
> To work around this, I have redefined the following route:
>
> from("jms:topic:example").aggregator(...).to("Seda:start");
>
> from("seda:start").onException(....).process(...);
>
> So far it seems to works fine with the extra endpoint.
>
> Thanks for your help.
>
>
> Claus Ibsen-2 wrote:
>>
>> Hi Doug
>>
>> I have fixed it now in 1.5.1 and 2.0.
>>
>> However I do think the 1.5.1-SNAPSHOT is currently not published to a
>> maven repo. Willem wrote something about it.
>> I don't know the status of this, but I am sure we are gonna get it
>> sorted so the 1.x branch will have SNAPSHOTS published automatically
>>
>> /Claus Ibsen
>> Apache Camel Committer
>> Blog: http://davsclaus.blogspot.com/
>>
>>
>>
>> On Sat, Dec 6, 2008 at 10:50 AM, Claus Ibsen <[EMAIL PROTECTED]>
>> wrote:
>>> Hi Doug
>>>
>>> Ah you have spotted a bug. Basically the aggregate has a flaw if you
>>> don't add it in the start of the route, right after the from, so we
>>> added this exception to force end users to have it in the start. But
>>> the onException now injects itself in between as well, so its
>>> from.onexception.aggreagator. So onException fools the aggreagator.
>>>
>>> We have a ticket to fix the aggreagator so it can be defined anywhere.
>>> I think we need to convert the exception into a WARN logging for now.
>>> https://issues.apache.org/activemq/browse/CAMEL-1150
>>>
>>>
>>>
>>> /Claus Ibsen
>>> Apache Camel Committer
>>> Blog: http://davsclaus.blogspot.com/
>>>
>>>
>>>
>>> On Fri, Dec 5, 2008 at 10:20 PM, dougly <[EMAIL PROTECTED]> wrote:
>>>>
>>>> thanks for clarifying this.
>>>>
>>>> However when I try to use the dead letter channel redelivery method I
>>>> got
>>>> the
>>>>
>>>> "Aggregator must be the only output added to the route" logged! And the
>>>> configured routes do not start at all.
>>>>
>>>> Aggregator must be the only output added to the route:
>>>> Route[[From[jms:topic:example]] -> [Exception[[class
>>>> com.lyfam.TestException] -> [To[mock:error]]]]]
>>>>
>>>> Basically I like to redeliver the exchange if the SNIPPET 1 code throws
>>>> exception.
>>>>
>>>> Here is the layout of my route:
>>>>
>>>> public void configure() throws Exception {
>>>> errorHandler(deadLetterChannel("mock:error").maximumRedeliveries(2));
>>>>
>>>> onException(TestException.class)
>>>>                    .maximumRedeliveries(1)
>>>>                    .to("mock:error");
>>>>
>>>>
>>>> from("imap:localhost?username=test&password=test")
>>>>    .process(new MyProcessor())
>>>>    .to("jms:topic:example");
>>>>
>>>> from("jms:topic:memo")
>>>>    .aggregator(
>>>>                        new PredicateAggregationCollection(
>>>>                                header("testId"),
>>>>                                new AggregationStrategy()
>>>>                                {
>>>>                                    @Override
>>>>                                    public Exchange aggregate(Exchange
>>>> oldExchange, Exchange newExchange)
>>>>                                    {
>>>>                                        ......
>>>>                                        return newExchange;
>>>>                                    }
>>>>                                },
>>>>
>>>> header(Exchange.AGGREGATED_COUNT).isEqualTo(2)))
>>>>                .batchTimeout(500L)
>>>>                .process(new Processor(){
>>>>
>>>>                    // SNIPPET 1
>>>>                    @Override
>>>>                    public void process(Exchange exh) throws Exception
>>>>                    {
>>>>                        ......
>>>>                    }
>>>>                    // end SNIPPET 1
>>>>                });
>>>> }
>>>>
>>>> Thanks for helping
>>>>
>>>>
>>>> dougly wrote:
>>>>>
>>>>> Hi,
>>>>> I have the following route:
>>>>>
>>>>> from("jms:topic:example").process(new MyProcessor());
>>>>>
>>>>> If during the exchange processing exceptions are thrown, I would like
>>>>> to
>>>>> be able to retry that exchange again.
>>>>>
>>>>> I am thinking about using the Transactional client described in EIP but
>>>>> also I find out that Dead Letter Channel has the redelivery mechanism
>>>>> to
>>>>> achieve the same thing.
>>>>>
>>>>> So experts, in this case should I just use the Dead Letter channel
>>>>> redelivery to shift the exchange back to the JMS topic for another try?
>>>>>
>>>>> Thanks
>>>>>
>>>>> Doug
>>>>>
>>>>
>>>> --
>>>> View this message in context:
>>>> http://www.nabble.com/Redelivery-Strategy-tp20861316s22882p20862711.html
>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>
>>>>
>>>
>>
>>
>
> --
> View this message in context: 
> http://www.nabble.com/Redelivery-Strategy-tp20861316s22882p20871790.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>

Reply via email to