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.