Ben,

Thanks for the quick reply.  I had assumed that each failure would result in
a message to the dead message queue, but now I understand that a message
goes to the dead message queue only after all redelivery attempts have been
exhausted.

Thanks again!

~ Greg

On Wed, May 25, 2011 at 12:21 PM, boday <[email protected]>wrote:

> hey Greg, given that you configured your error handler to do 3 redelivery
> attempts (before moving to mock:dead), I think the 2nd retry (or 3rd
> message, with MyService.count=3) will succeed and skip the mock:dead
> endpoint...only when all attempts of redelivery have failed, will the
> Exchange be moved to a dead letter endpoint...
>
>
> gmcfall wrote:
> >
> > Hi,
> >
> > I'm a camel newbie and I'm having trouble with the dead message channel.
> >
> > In the JUnit test below, I am trying to route dead messages to a mock
> > endpoint, but the assertion for the expected message count on this
> > endpoint
> > is failing.
> > For some reason, messages are not being delivered to the "mock:dead"
> > endpoint.
> >
> > I see the following result for this test:
> >
> > *java.lang.AssertionError: *mock://dead Received message count. Expected:
> > <2> but was: <0>
> >
> >
> > Can someone explain what I am doing wrong?
> >
> >
> > public class DeadLetterTest extends CamelTestSupport {
> >
> > @EndpointInject(uri = "mock:sink")
> > protected MockEndpoint sink;
> >
> > @EndpointInject(uri = "mock:dead")
> > protected MockEndpoint deadEndpoint;
> >  @Produce(uri = "direct:inbox")
> > protected ProducerTemplate template;
> >  @Test
> > public void testDeadLetter() throws Exception {
> >  sink.expectedMessageCount(1);
> > deadEndpoint.expectedMessageCount(2);
> >  template.sendBody("Hello World");
> >  sink.assertIsSatisfied();
> > deadEndpoint.assertIsSatisfied();
> > }
> >
> > static public class MyService {
> > int count = 0;
> >  public String enrich(String body) throws Exception {
> > count++;
> > if (count < 3) {
> > throw new Exception("The Service is unavailable");
> > }
> > return body + "." + count;
> > }
> > }
> >
> >  @Override
> > protected RouteBuilder createRouteBuilder() {
> > return new RouteBuilder() {
> >
> > @Override
> > public void configure() throws Exception {
> >  errorHandler(
> > deadLetterChannel("mock:dead")
> > .maximumRedeliveries(3)
> > .redeliveryDelay(500)
> > );
> >  MyService bean = new MyService();
> >  from("direct:inbox")
> > .bean(bean, "enrich")
> > .to("mock:sink");
> > }
> > };
> > }
> > }
> >
> > Thanks,
> > ~ Greg McFall
> >
>
>
> -----
> Ben O'Day
> IT Consultant -http://benoday.blogspot.com
>
> --
> View this message in context:
> http://camel.465427.n5.nabble.com/Problem-using-dead-message-channel-tp4425741p4425825.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>

Reply via email to