Thanks Claus I will give that a lash. *Robert Simmons Jr. MSc. - Lead Java Architect @ EA* *Author of: Hardcore Java (2003) and Maintainable Java (2012)* *LinkedIn: **http://www.linkedin.com/pub/robert-simmons/40/852/a39 <http://www.linkedin.com/pub/robert-simmons/40/852/a39>*
On Fri, May 2, 2014 at 12:28 AM, Claus Ibsen <[email protected]> wrote: > Hi > > You may want to use the DLQ built-in by AMQ instead. You can configure > AMQ to do X number of redeliveries and if that fails move the message > to a DLQ (either a shared or per destination DLQ). > > Then all that is done by AMQ, and you dont need to setup a DLQ error > handler in Camel. > > What you want to do with AMQ, TX and Camel's DLC error handler is hard > to do. As you need to make it look like a "commit" from AMQ point of > view so the consumed message is ACKed. But the messages you have sent, > should not be sent, and so they must look like a "rollback" - and you > cannot do both. > > So what you try to do is not possible. > > Let AMQ do the DLQ handling, then there is no problems. > > > > On Thu, May 1, 2014 at 7:00 PM, kraythe . <[email protected]> wrote: > > Anyone know how to configure JMS as a dead letter channel but in a > > transaction? Should be a simple issue I would think but its not working. > > > > final String fromURI = > > String.format("activemq:queue:%s?concurrentConsumers=%d", > > config.basicRouteInboxQueue(), > > config.concurrentConsumers()); > > > > > errorHandler(deadLetterChannel("activemq:queue:ea.automation.dead").maximumRedeliveries(0)); > > // The comments on the end of route steps help in reading code and > > force the code formatter to behave. > > from(fromURI).routeId(ROUTE_ID_BASIC_ROUTE) // read from the inbox in > > ActiveMQ > > .transacted(KEY_TXNPOLICY_REQUIRED) // make the route transacted. > > .setHeader(HDR_REQUESTOR, constant(config.requestor())) // we > will > > use the context name as the the requester > > .to("activemq:queue:" + config.basicRouteOutboxQueue()).id("end") > > .process(new Processor() { > > @Override > > public void process(final Exchange exchange) throws Exception { > > throw new RuntimeException("Forced exception"); > > } > > }); > > > > This causes the resulting message to end up in BOTH the dead letter > channel > > and the outbox, which is of course not desired. > > > > Thanks in advance. > > > > *Robert Simmons Jr. MSc. - Lead Java Architect @ EA* > > *Author of: Hardcore Java (2003) and Maintainable Java (2012)* > > *LinkedIn: **http://www.linkedin.com/pub/robert-simmons/40/852/a39 > > <http://www.linkedin.com/pub/robert-simmons/40/852/a39>* > > > > -- > Claus Ibsen > ----------------- > Red Hat, Inc. > Email: [email protected] > Twitter: davsclaus > Blog: http://davsclaus.com > Author of Camel in Action: http://www.manning.com/ibsen > hawtio: http://hawt.io/ > fabric8: http://fabric8.io/ >
