For details see: http://camel.apache.org/transactionerrorhandler.html

On Sat, May 14, 2011 at 11:55 AM, Richard Kettelerij <
[email protected]> wrote:

> You need to use the SpringRouteBuilder instead of the plain Java
> RouteBuilder. Instead of instantiating a TransactionErrorHandlerBuilder
> yourself you can just use the DSL method to configure the
> TransactionalErrorHandler. In that case Camel will also be able to perform a
> lookup of your transaction manager.
>
> So your route will be something like:
>
> camel.addRoutes(new SpringRouteBuilder() {
>
>                        public void configure() {
>                                errorHandler(new
> LoggingErrorHandlerBuilder()
>                                        .level(LoggingLevel.WARN));
>
>                                // not transactional
>                                from("amq:xxx")
>                                .routeId("heartbeat-amq-to-wmq")
>                                .startupOrder(1)
>                                .onException(JMSException.class)
>                                .handled(true)
>                                .to("log:applogger?level=ERROR")
>                                .end()
>                                .to("wmq:xxx");
>
>                                // transactional
>                                from("wmq:yyy")
>                                .routeId("data-wmq-to-amq")
>                                .startupOrder(2)
>                                .errorHandler(transactionErrorHandler()
>                              .maximumRedeliveries(1)
>
>                              .redeliveryDelay(1000)
>                              .retryAttemptedLogLevel(LoggingLevel.WARN))
>                                .transacted("wmqTxPolicy")
>                                .to("amq:yyy");
>
>                        }
>                });
>
> instantiating a TransactionErrorHandlerBuilder yourself
>
>
> On Sat, May 14, 2011 at 10:40 AM, Hanson <[email protected]> wrote:
>
>> The camel was configured as follows:
>>
>>                camel.addRoutes(new RouteBuilder() {
>>                        public void configure() {
>>                                errorHandler(new
>> LoggingErrorHandlerBuilder()
>>                                        .level(LoggingLevel.WARN));
>>
>>                                // not transactional
>>                                from("amq:xxx")
>>                                .routeId("heartbeat-amq-to-wmq")
>>                                .startupOrder(1)
>>                                .onException(JMSException.class)
>>                                .handled(true)
>>                                .to("log:applogger?level=ERROR")
>>                                .end()
>>                                .to("wmq:xxx");
>>
>>                                // transactional
>>                                from("wmq:yyy")
>>                                .routeId("data-wmq-to-amq")
>>                                .startupOrder(2)
>>                                .errorHandler(new
>> TransactionErrorHandlerBuilder()
>>                                        .maximumRedeliveries(1)
>>                                        .redeliveryDelay(1000)
>>
>>  .retryAttemptedLogLevel(LoggingLevel.WARN))
>>                                .transacted("wmqTxPolicy")
>>                                .to("amq:yyy");
>>
>>                        }
>>                });
>>
>> wmqTxPolicy was defined in spring:
>>
>>        <bean id="wmqTxPolicy"
>> class="org.apache.camel.spring.spi.SpringTransactionPolicy">
>>                <property name="transactionManager" ref="wmqTxManager"/>
>>                <property name="propagationBehaviorName"
>> value="PROPAGATION_REQUIRED"/>
>>        </bean>
>>        <bean id="wmqTxManager"
>>
>>  class="org.springframework.jms.connection.JmsTransactionManager">
>>                <property name="connectionFactory"
>> ref="wmqConnectionFactory" />
>>        </bean>
>>        ...
>>
>> The exception was:
>> 2011-05-14 16:21:56,031 [main] INFO : Apache Camel 2.7.1
>> (CamelContext:camel-1) is shutting down
>> 2011-05-14 16:21:56,031 [main] INFO : Starting to graceful shutdown 0
>> routes
>> (timeout 300 seconds)
>> 2011-05-14 16:21:56,046 [main] INFO : Graceful shutdown of 0 routes
>> completed in 0 seconds
>> 2011-05-14 16:21:56,046 [main] INFO : Shutting down with no inflight
>> exchanges.
>> 2011-05-14 16:21:56,046 [main] INFO : Uptime: 2.609 seconds
>> 2011-05-14 16:21:56,046 [main] INFO : Apache Camel 2.7.1 (CamelContext:
>> camel-1) is shutdown in 0.015 seconds
>> 2011-05-14 16:21:56,046 [main] ERROR: Exception in AAA: Failed to create
>> route data-wmq-to-amq at: >>> Policy[ref:wmqTxPolicy] <<< in route:
>> Route[[From[wmq:YYY]] -> [Policy[ref:wmqTxPolicy... because of
>> transactionTemplate must be specified on: TransactionErrorHandlerBuilder
>> Unexpected exception org.apache.camel.FailedToCreateRouteException
>> org.apache.camel.model.RouteDefinition.addRoutes 815
>> org.apache.camel.model.RouteDefinition.addRoutes 165
>> org.apache.camel.impl.DefaultCamelContext.startRoute 706
>> org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions 1643
>> org.apache.camel.impl.DefaultCamelContext.doStartCamel 1432
>> org.apache.camel.impl.DefaultCamelContext.doStart 1336
>> org.apache.camel.impl.ServiceSupport.start 67
>> org.apache.camel.impl.ServiceSupport.start 54
>> org.apache.camel.impl.DefaultCamelContext.start 1314
>> ...
>>
>> How to add a transactionTemplate to TransactionErrorHandlerBuilder? Thanks
>> in ad!
>>
>>
>> -----
>> ~Hanson
>> Java for food, Python for fun
>> http://hanson.appspot.com/
>> --
>> View this message in context:
>> http://camel.465427.n5.nabble.com/Question-about-TransactionErrorHandlerBuilder-tp4395278p4395278.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>
>

Reply via email to