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.