Thanks Claus. On Tue, Oct 20, 2009 at 12:46 AM, Claus Ibsen <[email protected]> wrote:
> On Tue, Oct 20, 2009 at 6:28 AM, Claus Ibsen <[email protected]> > wrote: > > On Mon, Oct 19, 2009 at 8:44 PM, Allen Lau <[email protected]> wrote: > >> Hi Claus, I think having Camel decorate the message is a great idea. > We > >> are having the same issue where when a message goes to the DLQ. For > >> components/endpoints we create ourselves, we usually try to add such a > >> header, but for existing Camel components, this information would be > very > >> helpful. > >> > > > > I have created ticket to track this > > https://issues.apache.org/activemq/browse/CAMEL-2079 > > > > Camel now decorates this by adding properties to the exchange. See > details at the wiki page for the DLC (link on CAMEL-2079) > > > >> Thanks, > >> Allen > >> > >> On Mon, Oct 19, 2009 at 6:05 AM, Claus Ibsen <[email protected]> > wrote: > >> > >>> On Tue, Oct 13, 2009 at 10:36 PM, terminator_007 > >>> <[email protected]> wrote: > >>> > > >>> > hey, > >>> > thanks for the suggestion but I coudnt understand it... > >>> > > >>> > can you please elaborate a little... > >>> > > >>> > >>> Ah found your reply. > >>> > >>> In your route you have several endpoints that you send a message to. > >>> And in any case of an error you let the dead letter channel handle > >>> this error. > >>> Your problem is then you want to know if it was endpoint A, endpoint B > >>> or endpoint ... N that failed? > >>> > >>> What we could do is to let Camel decorate the message with a > >>> header/property that tells which endpoint was last invoked. > >>> Then it makes it super easy for you to know which endpoints failed. > >>> > >>> Does it make sense now? > >>> > >>> > >>> > thanks a ton. > >>> > > >>> > > >>> > Claus Ibsen-2 wrote: > >>> >> > >>> >> Hi > >>> >> > >>> >> Maybe we should let Camel add the endpoint a producer is sending to. > >>> >> > >>> >> Then when you route using .to("xxx") then Camel will add a header > such > >>> as > >>> >> Exchange.SENDTO_ENDPOINT > >>> >> > >>> >> Which contains the XXX > >>> >> > >>> >> That would allow you to easily know which service failed. > >>> >> > >>> >> > >>> >> > >>> >> > >>> >> On Sun, Oct 11, 2009 at 1:39 AM, tide08 <[email protected]> > wrote: > >>> >>> > >>> >>> I would assume that uri would be available in header as per > Camel-Http > >>> >>> Documentation: > >>> >>> > >>> >>> HttpProducer.HTTP_URI - for v1.6.x > >>> >>> Exchange.HTTP_URI - for v2.x > >>> >>> > >>> >>> or else as other approach you can just set header to distinguish > >>> between > >>> >>> uri's avoiding custom processor for errorHandler itself. > >>> >>> > >>> >>> Something like - > >>> >>> > >>> >>> <to uri="bean:soapMessageCreator"/> > >>> >>> <multicast> > >>> >>> <pipeline> > >>> >>> <setHeader headerName="serviceName"> > >>> >>> <constant>serviceone</constant> > >>> >>> </setHeader> > >>> >>> > >>> >>> <to > >>> >>> uri="http://mpkl04l34h9g2:8080/serviceone/subscriber"/> > >>> >>> </pipeline> > >>> >>> <pipeline> > >>> >>> <setHeader headerName="serviceName"> > >>> >>> <constant>servicetwo</constant> > >>> >>> </setHeader> > >>> >>> > >>> >>> <to > >>> >>> uri="http://mpkl04l34h9g2:8080/servicetwo/subscriber"/> > >>> >>> </pipeline> > >>> >>> </multicast> > >>> >>> > >>> >>> All the best! > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> terminator_007 wrote: > >>> >>>> > >>> >>>> thanks for the suggestion..i have one doubt here..how do i get the > >>> know > >>> >>>> in > >>> >>>> the processor class which delivery has failed...i am delivering to > two > >>> >>>> destinations...so is there any property on the xchange message > which > >>> >>>> will > >>> >>>> tell me the delivery to which destination has failed ? > >>> >>>> > >>> >>>> tide08 wrote: > >>> >>>>> > >>> >>>>> You can register a processor which is invoked before message to > DLQ. > >>> >>>>> This > >>> >>>>> can be achieved by property onRedelivery on > DeadLetterChannelBuilder. > >>> >>>>> So > >>> >>>>> following should work - > >>> >>>>> > >>> >>>>> <bean id="myDeadLetterErrorHandler" > >>> >>>>> class="org.apache.camel.builder.DeadLetterChannelBuilder"> > >>> >>>>> <property name="onRedelivery" ref="myErrorProcessor"/> > >>> >>>>> <property name="deadLetterUri" > >>> >>>>> value="activemq:queue:queue.DeadLetter"/> > >>> >>>>> <property name="redeliveryPolicy" > >>> >>>>> ref="myRedeliveryPolicyConfig"/> > >>> >>>>> <property name="useOriginalMessage" > value="true"/> > >>> >>>>> > >>> >>>>> <property name="handled" value="false"/> > >>> >>>>> </bean> > >>> >>>>> > >>> >>>>> <bean id="myErrorProcessor" class="com.app.CustomErrorProcessor" > /> > >>> >>>>> > >>> >>>>> You can than manipulate message header before it goes to DLQ. > >>> >>>>> > >>> >>>>> Thanks! > >>> >>>>> > >>> >>>>> > >>> >>>>> terminator_007 wrote: > >>> >>>>>> > >>> >>>>>> This is my configuration file > >>> >>>>>> > >>> >>>>>> <bean id="soapMessageCreator" > class="XXX.SOAPMessageCreator"/> > >>> >>>>>> > >>> >>>>>> <bean id="myDeadLetterErrorHandler" > >>> >>>>>> class="org.apache.camel.builder.DeadLetterChannelBuilder"> > >>> >>>>>> <property name="deadLetterUri" > >>> >>>>>> value="activemq:queue:queue.DeadLetter"/> > >>> >>>>>> <property name="redeliveryPolicy" > >>> >>>>>> ref="myRedeliveryPolicyConfig"/> > >>> >>>>>> <property name="useOriginalMessage" > value="true"/> > >>> >>>>>> > >>> >>>>>> <property name="handled" value="false"/> > >>> >>>>>> </bean> > >>> >>>>>> <bean id="myRedeliveryPolicyConfig" > >>> >>>>>> class="org.apache.camel.processor.RedeliveryPolicy"> > >>> >>>>>> <property name="maximumRedeliveries" value="4"/> > >>> >>>>>> <property name="redeliverDelay" value="250"/> > >>> >>>>>> </bean> > >>> >>>>>> > >>> >>>>>> <camelContext id="camel" > >>> >>>>>> xmlns="http://camel.apache.org/schema/spring" > > >>> >>>>>> <package>org.apache.camel.example.jmstofile</package> > >>> >>>>>> <route errorHandlerRef="myDeadLetterErrorHandler"> > >>> >>>>>> <from > >>> >>>>>> > >>> > uri="activemq:topic:topic.Patient?clientId=testCamelClient&durableSubscriptionName=zyz123"/> > >>> >>>>>> <to uri="bean:soapMessageCreator"/> > >>> >>>>>> <multicast> > >>> >>>>>> <to > >>> >>>>>> uri="http://mpkl04l34h9g2:8080/serviceone/subscriber"/> > >>> >>>>>> <to > >>> >>>>>> uri="http://mpkl04l34h9g2:8080/servicetwo/subscriber"/> > >>> >>>>>> </multicast> > >>> >>>>>> > >>> >>>>>> </route> > >>> >>>>>> </camelContext> > >>> >>>>>> > >>> >>>>>> <bean id="http" > >>> class="org.apache.camel.component.http.HttpComponent"> > >>> >>>>>> <property name="camelContext" ref="camel"/> > >>> >>>>>> <property name="httpConnectionManager" > >>> >>>>>> ref="myHttpConnectionManager"/> > >>> >>>>>> </bean> > >>> >>>>>> > >>> >>>>>> <bean id="myHttpConnectionManager" > >>> >>>>>> > >>> > class="org.apache.commons.httpclient.MultiThreadedHttpConnectionManager"> > >>> >>>>>> <property name="params" > ref="myHttpConnectionManagerParams"/> > >>> >>>>>> </bean> > >>> >>>>>> > >>> >>>>>> <bean id="myHttpConnectionManagerParams" > >>> >>>>>> > >>> > class="org.apache.commons.httpclient.params.HttpConnectionManagerParams"> > >>> >>>>>> <property name="defaultMaxConnectionsPerHost" value="5"/> > >>> >>>>>> </bean> > >>> >>>>>> > >>> >>>>>> > >>> >>>>>> here, if one of my "to" destination is down, I see two messages > in > >>> the > >>> >>>>>> DLQ. > >>> >>>>>> also, i want to modify the message header with the name of the > >>> >>>>>> destination that failed for example if service > >>> >>>>>> "http://mpkl04l34h9g2:8080/servicetwo/subscriber" was down, I > want > >>> to > >>> >>>>>> add "http://mpkl04l34h9g2:8080/servicetwo/subscriber" to > >>> >>>>>> messager/header/target before delivering the message to DLQ so > that > >>> >>>>>> the > >>> >>>>>> admin process which checks messages in DLQ knows which are the > >>> targets > >>> >>>>>> which did not receive the message. > >>> >>>>>> > >>> >>>>>> Please suggest what can be done to achieve this. > >>> >>>>>> > >>> >>>>> > >>> >>>>> > >>> >>>> > >>> >>>> > >>> >>> > >>> >>> -- > >>> >>> View this message in context: > >>> >>> > >>> > http://www.nabble.com/modify-message-before-delivering-to-Dead-Letter-Queue-tp25827098p25838615.html > >>> >>> Sent from the Camel - Users mailing list archive at Nabble.com. > >>> >>> > >>> >>> > >>> >> > >>> >> > >>> >> > >>> >> -- > >>> >> Claus Ibsen > >>> >> Apache Camel Committer > >>> >> > >>> >> Open Source Integration: http://fusesource.com > >>> >> Blog: http://davsclaus.blogspot.com/ > >>> >> Twitter: http://twitter.com/davsclaus > >>> >> > >>> >> > >>> > > >>> > -- > >>> > View this message in context: > >>> > http://www.nabble.com/modify-message-before-delivering-to-Dead-Letter-Queue-tp25827098p25880385.html > >>> > Sent from the Camel - Users mailing list archive at Nabble.com. > >>> > > >>> > > >>> > >>> > >>> > >>> -- > >>> Claus Ibsen > >>> Apache Camel Committer > >>> > >>> Open Source Integration: http://fusesource.com > >>> Blog: http://davsclaus.blogspot.com/ > >>> Twitter: http://twitter.com/davsclaus > >>> > >> > > > > > > > > -- > > Claus Ibsen > > Apache Camel Committer > > > > Open Source Integration: http://fusesource.com > > Blog: http://davsclaus.blogspot.com/ > > Twitter: http://twitter.com/davsclaus > > > > > > -- > Claus Ibsen > Apache Camel Committer > > Open Source Integration: http://fusesource.com > Blog: http://davsclaus.blogspot.com/ > Twitter: http://twitter.com/davsclaus >
