I would remove this line: c.setIdleTimeout(0);
Robert 2010/1/5 Jen Andre <[email protected]>: > > Yes, I am using both the c++ broker and the java library from 0.5. > > Setting the idle_timeout in the AMQP url doesn't seem affect anything. > I will try grabbing the latest from trunk as suggested by another > user. > > I'm not sure which API I'm supposed to be using. I tried both the > code in org.apache.qpid.client.* and org.apache.qpid.transport.* and > I get the same behavior. > > Here some sample code. Maybe you can tell me what I'm doing wrong > (192.168.10.128 is the IP address of the broker): > > > String url = > > String.format("amqp://%s:%...@%s/?brokerlist='tcp://%s:%d?idle_timeout='60''&clientid=%s&ssl=%s", > "guest", "guest", "192.168.10.128", > "192.168.10.128", 5672, "myid", > false); > > log.debug("url: " + url); > > AMQConnection c = new AMQConnection(url); > > try { > > final AMQSession session = (AMQSession) > c.createSession(false, AMQSession.AUTO_ACKNOWLEDGE); > > // make the queue name same as the binding key, make it durable > > AMQDestination queueDestination = new AMQTopic(new > AMQShortString("amq.topic"), > new AMQShortString("myBindingKey"), > false, > new AMQShortString("myBindingKey"), > true); > > > c.setIdleTimeout(0); > > log.info("Binding to " + "myBindingKey"); > > session.declareAndBind(queueDestination); > > MessageConsumer consumer = > session.createExclusiveConsumer(queueDestination); > > consumer.setMessageListener(new MessageListener() { > > public void onMessage(Message arg0) { > System.out.println("Got message..."); > } > } > ); > > > c.start(); > > Thread.sleep(1000 * 360); // sleep 360 seconds to trigger issue > > session.close(); > > } finally { > > c.close(); > } > > > Thanks! > -Jen > > On Tue, Jan 5, 2010 at 2:31 PM, Rajith Attapattu [via Apache Qpid > users] <[email protected]> wrote: >> Hello Jean, >> >> It appears that you are using the C++ broker and the java client. >> Could you confirm which version you are using? >> >> On Tue, Jan 5, 2010 at 12:47 PM, Jen Andre <[hidden email]> wrote: >>> >>> Hello, >>> >>> I have a Java client listener that subscribes to a topic and waits for >>> messages. I'm noticing after 120 seconds of idle time (no messages >>> received) the connections time out (here's what I see in syslog messages >>> for >>> qpidd) >>> >>> qpidd[3472]: 2010-01-01 16:46:20 error Connection timed out: closing >>> >>> This is consistent with the debug messages I'm seeing on the client side: >>> >>> IoReceiver - /192.168.10.128:5672 2010-01-05 12:32:10,126 WARN >>> [apache.qpid.transport.ClientDelegate] Ignoring the idle timeout 0 set by >>> the connection, using the brokers max value 120 >>> >>> and >>> >>> >>> IoReceiver - /192.168.10.128:5672 2010-01-05 12:38:57,898 DEBUG >>> [apache.qpid.transport.Connection] RECV: [conn:9ced8e] ch=0 >>> ConnectionHeartbeat() >>> IoReceiver - /192.168.10.128:5672 2010-01-05 12:40:57,899 DEBUG >>> [apache.qpid.transport.Connection] RECV: [conn:9ced8e] ch=0 >>> ConnectionHeartbeat() >>> IoReceiver - /192.168.10.128:5672 2010-01-05 12:40:58,618 DEBUG >>> [apache.qpid.transport.Connection] connection closed: conn:9ced8e >>> >>> >>> I'm a bit confused on how timeouts and heartbeats are supposed to work. >>> Does the client force the disconnect, or the server, or both, if the >>> heartbeats are not received in a specific period of time? >> Both the client and the broker could enforce a disconnect if they >> don't see any activity during two consecutive heartbeat intervals. >> >> Do both peers >>> send heartbeats? (this seems to imply it does. >> Both peers do send a heartbeat. >> The JMS client (0-10 version which you are using against the c++ >> broker) will echo a heartbeat in response to one sent by the broker. >> >>> http://qpid.apache.org/configure-broker-and-client-heartbeating.html). >> The link you provided is for the JMS Client (0-8 version) and the Java >> Broker. >> At the moment it's slightly different from JMS Client (0-10) and c++ >> broker combination. >> >> The amqj.heartbeat.delay is only effective for the 0-8 codepath. >> If you need to set the idle timeout for the 0-10 client you need to >> set it in the broker URL as follows >> >> amqp:///test?brokerlist='tcp://anotherhost:5684?idle_timeout='60'' >> Please note the idle_timeout is in secs and not in milisecs. >> >> We are working on consolidating the configuration and behaviour of the >> JMS client for both 0-8/9 and 0-10 versions. >> >>> I do notice that while I see a lot of RECV: heartbeat debug messages on >>> the >>> client side, I don't see any SEND: messages that indicates it's sending >>> them >>> to server. If the client is supposed to send them to the server >>> periodically to ensure the connection stays alive, how can I ensure this >>> is >>> happening? (setting system property amqj.heartbeat.delay seems to have no >>> effect). >>> >>> Thanks! >>> Jen >>> >>> >>> >>> >>> >>> -- >>> View this message in context: >>> http://n2.nabble.com/timeouts-tp4256406p4256406.html >>> Sent from the Apache Qpid users mailing list archive at Nabble.com. >>> >>> --------------------------------------------------------------------- >>> Apache Qpid - AMQP Messaging Implementation >>> Project: http://qpid.apache.org >>> Use/Interact: mailto:[hidden email] >>> >>> >> >> >> -- >> Regards, >> >> Rajith Attapattu >> Red Hat >> http://rajith.2rlabs.com/ >> >> --------------------------------------------------------------------- >> Apache Qpid - AMQP Messaging Implementation >> Project: http://qpid.apache.org >> Use/Interact: mailto:[hidden email] >> >> >> >> ________________________________ >> View message @ http://n2.nabble.com/timeouts-tp4256406p4256885.html >> To unsubscribe from timeouts, click here. >> > > -- > View this message in context: > http://n2.nabble.com/timeouts-tp4256406p4257648.html > Sent from the Apache Qpid users mailing list archive at Nabble.com. > --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:[email protected]
