Hi

Please remember to tell the versions of the product you use. Its a
vital information.


On Thu, Feb 4, 2010 at 5:48 PM, Olivier Billard
<olivier.bill...@gmail.com> wrote:
>
> Hi there,
>
> I am new to Camel, and a little bit disappointed to get the right way to
> configure my use case.
>
> - entry point is a JMS queue,
> - then a multicast to a second (backup) queue and a content-based router
> - the content-based router chooses a WS endpoint based on the XML root
> element of the message
> - I would like to have a dead letter channel managing inaccessible
> webservices, my requirement being not loosing any single message.
>
>
> jms:startqueue -> multicast (
>    -> jms:backupqueue
>    -> content-based router (
>            {root-element=ws1} -> ws1 endpoint       (I need a dead letter
> channel here)
>            {root-element=ws2} -> ws2 endpoint       (I need a dead letter
> channel here)
>  )
>
>
>
> I think I did not manage to get to the right documentation (again, new
> rider), and the only one corresponding to my content-based router seems to
> be the dynamic router, using a POJO and @RecipientList ([1]), as Java DSL
> does not seem to handle this case with the classic "Content Based Router".
>
> My question, finally :
> I would like to have a dead letter channel managing the inaccessible
> webservices, given the fact that I used POJOs annotations to build the
> route. I would like not to mix Spring DSL / Java DSL / Beans routing
> configuraiton. What I felt was that I could use the errorHandlerRef
> attribute of the camelContext Spring element, inspired with the Spring based
> configuration sample [2], but it the dead letter channel (a JMS queue in my
> case) is not filled.
>
> Using this attribute does not trigger the configured dead letter channel,
> with the following configuration :
>
>  <camelContext id="camelContext"
> xmlns="http://camel.apache.org/schema/spring";
>    errorHandlerRef="myDeadLetterErrorHandler" />
>
>
>  <!-- here we configure our DeadLetterChannel -->
>  <bean id="myDeadLetterErrorHandler"
> class="org.apache.camel.builder.DeadLetterChannelBuilder">
>    <!-- exchanges is routed to ${router.deadLetter.uri} in case redelivery
> failed -->
>    <property name="deadLetterUri" value="${router.deadLetter.uri}" />
>    <!-- reference the redelivery policy to use -->
>    <property name="redeliveryPolicy" ref="myRedeliveryPolicyConfig" />
>  </bean>
>
>  <!-- here we set the redelivery settings -->
>  <bean id="myRedeliveryPolicyConfig"
> class="org.apache.camel.processor.RedeliveryPolicy">
>    <!--
>      try redelivery at most 3 times, after that the exchange is dead and
> its
>      routed to the ${router.deadLetter.uri} endpoint
>    -->
>    <property name="maximumRedeliveries" value="3" />
>    <!-- delay 250ms before redelivery -->
>    <property name="redeliverDelay" value="250" />
>  </bean>
>
>
> Another solution would be to :
> - decouple the content-based router from the WS endpoint, using a "direct:"
> channel, and adding a RouteBuilder defining a dead letter channel between
> the "direct:" channels and the WS endpoints :
>
> jms:startqueue -> multicast (
>    -> jms:backupqueue
>    -> content-based router (
>            {root-element=ws1} -> direct:ws1 -> ws1 endpoint       (I need a
> dead letter channel here)
>            {root-element=ws2} -> direct:ws2 -> ws2 endpoint       (I need a
> dead letter channel here)
>  )
>
>
> Can someone please help me to find what the problem is, and what would be
> the ideal solution ?
> Many thanks !
>
> --
> Olivier
>
>
> [1] http://camel.apache.org/dynamic-router.html
> [2]
> http://camel.apache.org/error-handler.html#ErrorHandler-Springbasedconfigurationsample
>
> -----
> --
> Olivier Billard
> --
> View this message in context: 
> http://old.nabble.com/Defining-a-DeadLetterChannel-when-using-POJO-annotations-tp27455914p27455914.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>



-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Reply via email to