camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Claus Ibsen (Updated) (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CAMEL-4948) Chaos arround durable jms transacted configuration
Date Mon, 06 Feb 2012 06:43:59 GMT

     [ https://issues.apache.org/jira/browse/CAMEL-4948?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Claus Ibsen updated CAMEL-4948:
-------------------------------

    Estimated Complexity:   (was: Moderate)
      Remaining Estimate:     (was: 168h)
       Original Estimate:     (was: 168h)

Its better to ask first on the @user mailing list for help, instead of creating a JIRA ticket
first.

This is what we say on the getting help page at:
http://camel.apache.org/support
                
> Chaos arround durable jms transacted configuration
> --------------------------------------------------
>
>                 Key: CAMEL-4948
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4948
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-activemq, camel-core, camel-jms
>    Affects Versions: 2.8.1
>         Environment: JDK=1.6.24 Oracle
>            Reporter: David Cifer
>            Priority: Minor
>         Attachments: AsyncInterMediaTest.java, camelasync.zip
>
>
> Maybe this is two bug and maybe I miss understand something, but here is the issue.
> I've created a test. A route, which reads a JMS transacted durable, but every fifth message
is thrown back by an exception.
> For example I send 10 message into the durrable, than I generate 2 exception. One for
the fifth one and one for the nineth (because the fifth one going to be resend as transaction
failed).
> Here is the route:
> from("jms:topic:test2?clientId=testClient&durableSubscriptionName=testSubs&transacted=true")
>                 .log("Processign from durable: ${body}").delay(100)
>                 .process(new ExceptionGenerator())
>                 .log("Retrieved from durable: ${body}").to("mock:durable");
> Code of the Exception generator:
> public void process(Exchange arg0) throws Exception {
>       int i = counter.incrementAndGet();
>       if (i % 5 == 0) {             
>         throw new IllegalArgumentException("Every fifth message is illegal: " + arg0.getIn().getBody());
>       }
>     }
> The issue, what I had is that the first message (the fifth) is rolled back just nice.
But after that all message simply lost.
> This is I think the reason that since 2.8.x you have to use CACHE_NONE otherwise you
mess up the transaction cache.
> Here is the second part of the problem:
> The whole test works just fine under 2.7.5
> But to make it start above that is a configuration nightmare. For example clientId and
transacted options in the route definition cannot appear together.
> To make it work above 2.7.5 You have to add manually to the connection configuration:
>     ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ACTIVE_MQ_HOST);
>     connectionFactory.setClientID("testClient"); // <-- This is necessary above 2.7.5
meaning 2.8.x. Under 2.8.x so example 2.7.5 will break configuration
>     ctx.addComponent("activemq", ActiveMQComponent.activeMQComponent(ACTIVE_MQ_HOST));
> Summary:
> Above 2.7.5 clientId and transacted cannot appear in the same durable specification.
Which makes configuration brake backward compatibilty. It has to be configured on connection
factory level, which means I have to create a connectionfactory for each durable endpoint.
> Above 2.7.5 only the first transaction got rolled back. Upcomming failiures got lost.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message