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.
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
