Hi Have you tried with the option replyToTempDestinationAffinity=producer
On Sun, Nov 22, 2009 at 3:09 PM, Claus Ibsen <[email protected]> wrote: > On Sun, Nov 22, 2009 at 2:46 PM, Ming Fang <[email protected]> wrote: >> Thanks. >> But I hope that assigning this issue to 2.3 is just a default and that it >> will be sooner once issue is reviewed. >> I really need this fixed asap; or at least find a workaround or will have to >> remove Camel from our system. >> > > You are much welcome to git into this issue and help out. I am afraid > its not something we have time to look into in the very short time. > > Camel 2.1 is pending a release which should be started next week. > > You are also the first to point out this and Camel is running in > production at many companies. > If you are looking for help ASAP you may have to resort to professional > support. > > > For Camel 2.2 we have a roadmap laid out with 2-3 major areas to have covered. > We would like Camel 2.2 to be a "little" release in the sense it wont > take 3-4 months to complete, but focusing on those 2-3 areas. > > And you can use the regular JMS API to implement the failover behavior > yourself and still use Camel for the remainder. > > > >> On Nov 22, 2009, at 5:24 AM, Claus Ibsen wrote: >> >>> Hi >>> >>> Thanks for the sample project. I have created a ticket to lookup into this >>> https://issues.apache.org/activemq/browse/CAMEL-2211 >>> >>> >>> On Sun, Nov 22, 2009 at 6:39 AM, Ming Fang <[email protected]> wrote: >>>> Here is the smallest problem that demonstrates the problem. >>>> >>>> Java file >>>> >>>> package test; >>>> >>>> import org.apache.activemq.broker.BrokerService; >>>> import org.apache.activemq.camel.component.*; >>>> import org.apache.camel.CamelContext; >>>> import org.apache.camel.builder.RouteBuilder; >>>> import org.apache.camel.component.bean.ProxyHelper; >>>> import org.apache.camel.impl.DefaultCamelContext; >>>> import org.apache.log4j.*; >>>> >>>> public class ActiveMQTest { >>>> >>>> public static void main(String[] args) throws Exception { >>>> //log4j >>>> Logger.getRootLogger().addAppender(new ConsoleAppender(new >>>> PatternLayout(PatternLayout.DEFAULT_CONVERSION_PATTERN))); >>>> System.getProperties().put("org.apache.camel.jmx.disabled", "true"); >>>> >>>> //needs at least 2 servers to see problem. >>>> simulatorServer("tcp://localhost:61616"); >>>> simulatorServer("tcp://localhost:61617"); >>>> simulatorServer("tcp://localhost:61618"); >>>> >>>> //client >>>> CamelContext camelContext = new DefaultCamelContext(); >>>> ActiveMQConfiguration configuration = new ActiveMQConfiguration(); >>>> >>>> configuration.setBrokerURL("failover://(tcp://localhost:61616,tcp://localhost:61617,tcp://localhost:61618)"); >>>> camelContext.addComponent("jms", new >>>> ActiveMQComponent(configuration)); >>>> camelContext.start(); >>>> >>>> //invoke server. likely to fail when sleepTime is over 30 seconds >>>> Echo service = >>>> ProxyHelper.createProxy(camelContext.getEndpoint("jms:queue:echo"), >>>> Echo.class); >>>> int sleepTime = 31000; >>>> while (true) { >>>> System.out.println(service.echo("test")); >>>> Thread.sleep(sleepTime); >>>> } >>>> } >>>> >>>> private static void simulatorServer(final String url) throws Exception { >>>> //each server is listening on a dedicated broker >>>> BrokerService broker = new BrokerService(); >>>> broker.setUseJmx(false); >>>> broker.setPersistent(false); >>>> broker.addConnector(url); >>>> broker.start(); >>>> >>>> ActiveMQConfiguration configuration = new ActiveMQConfiguration(); >>>> configuration.setBrokerURL(url); >>>> CamelContext camelContext = new DefaultCamelContext(); >>>> camelContext.addComponent("jms", new >>>> ActiveMQComponent(configuration)); >>>> >>>> camelContext.addRoutes(new RouteBuilder() { >>>> public void configure() { >>>> from("jms:queue:echo").bean(new Echo(){ >>>> public String echo(String text) { >>>> return "Echo " + text + " from " + url; >>>> } >>>> }); >>>> } >>>> }); >>>> camelContext.start(); >>>> } >>>> >>>> //server interface >>>> public static interface Echo{ >>>> String echo(String text); >>>> } >>>> } >>>> >>>> >>>> Pom file >>>> >>>> <project xmlns="http://maven.apache.org/POM/4.0.0" >>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 >>>> http://maven.apache.org/maven-v4_0_0.xsd"> >>>> <modelVersion>4.0.0</modelVersion> >>>> <groupId>test</groupId> >>>> <artifactId>jmsproblem</artifactId> >>>> <packaging>jar</packaging> >>>> <version>1.0-SNAPSHOT</version> >>>> <name>jmsproblem</name> >>>> >>>> <dependencies> >>>> <dependency> >>>> <groupId>org.apache.camel</groupId> >>>> <artifactId>camel-core</artifactId> >>>> <version>2.0.0</version> >>>> </dependency> >>>> <dependency> >>>> <groupId>org.apache.camel</groupId> >>>> <artifactId>camel-jms</artifactId> >>>> <version>2.0.0</version> >>>> </dependency> >>>> <dependency> >>>> <groupId>org.apache.activemq</groupId> >>>> <artifactId>activemq-camel</artifactId> >>>> <version>5.3.0</version> >>>> </dependency> >>>> </dependencies> >>>> </project> >>>> >>>> >>>> On Nov 21, 2009, at 1:26 AM, Claus Ibsen wrote: >>>> >>>>> On Sat, Nov 21, 2009 at 7:18 AM, Ming Fang <[email protected]> wrote: >>>>>> Does anyone know of a fix for this? >>>>>> This is a critical problem for us, and for many I would think since this >>>>>> is a very typical configuration. >>>>>> >>>>> >>>>> Have you asked /searched at the AMQ forum also? >>>>> >>>>> Try creating a small application that demonstrates your issue so its >>>>> easier for others to try to reproduce the issue. >>>>> And make that application as simple as possible so there are less >>>>> moving parts to get confused by. >>>>> >>>>> >>>>> >>>>>> On Nov 19, 2009, at 6:59 AM, Ming Fang wrote: >>>>>> >>>>>>> Yes changing idelTimeOut in org.apache.activemq.pool.ConnectionPool to >>>>>>> a very large number would be a workaround. >>>>>>> However I don't see anyway of doing that in >>>>>>> org.apache.activemq.camel.component.ActiveMQConfiguration. >>>>>>> >>>>>>> But ultimately I think the way Camel uses JMS is just wrong; >>>>>>> The use of a Requestor to listen for out messages will always be a >>>>>>> problem because it's not guarantee to be listening on the same broker >>>>>>> as the publisher. >>>>>>> --ming >>>>>>> >>>>>>> On Nov 19, 2009, at 4:42 AM, Willem Jiang wrote: >>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> How about change the idle time of switching the broker ? >>>>>>>> >>>>>>>> If the idle time is larger than your application response time, you >>>>>>>> will not get this kind trouble anymore. >>>>>>>> >>>>>>>> Willem >>>>>>>> >>>>>>>> Ming Fang wrote: >>>>>>>>> Hi >>>>>>>>> We're using Camel 2.0 with Activemq 5.3. >>>>>>>>> Our app uses Camel jms remoting. >>>>>>>>> It's connecting to two discrete ActiveMQ brokers using the failover >>>>>>>>> transport randomly. Everything works fine at first. >>>>>>>>> The problem happens when the app is idle for more than 30 seconds. >>>>>>>>> After that any remote call will trigger Activemq client to reconnect >>>>>>>>> and may end up connecting to another broker. But the problem is the >>>>>>>>> Requestor does not reconnect and still connected to the original >>>>>>>>> broker. The result is calls are sent to one broker but the Requestor >>>>>>>>> is listening to a different broker for the response. >>>>>>>>> Is there a way to force the Requestor to use the same connection as >>>>>>>>> the producers? >>>>>>>>> --Ming >>>>>>>> >>>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> 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 >>>> >>>> >>> >>> >>> >>> -- >>> 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 >> >> > > > > -- > 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 > -- 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
