qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rob Godfrey <rob.j.godf...@gmail.com>
Subject Re: WebSocket timeout
Date Mon, 13 Feb 2017 10:15:38 GMT
I've raised https://issues.apache.org/jira/browse/QPID-7670 to cover this
issue, and made a change on trunk which I believe will provide the expected
behaviour wrt AMQP idle timeouts.

-- Rob

On 13 February 2017 at 00:04, Keith W <keith.wall@gmail.com> wrote:

> Hi Benjamin,
>
> This is a defect in the Qpid Broker for Java.  After running your
> code, I expect you are seeing the connection close after 300 seconds
> of inactivity.  This will be Jetty's
> org.eclipse.jetty.websocket.WebSocketFactory#maxIdleTime default,
> which is forcing the idle connection to close.  The Broker currently
> provides no way to override this value.  To workaround you'd need to
> find a way to keep the wire busy from the application (perhaps sending
> an empty message, with a TTL, to a 'heartbeat' queue).
>
> The Broker ought to be respecting the peer's requested idle timeout
> for websocket connections and ensuring that Jetty's maxIdleTime does
> not interfere.  This currently is not implemented.
>
> http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-
> transport-v1.0-os.html#doc-doc-idle-time-out
>
> Please raise a JIRA https://issues.apache.org/jira/browse/QPID.  There
> is a defect fix release due on 6.1 soon, so it may be possible to
> include this too.   Patches are always appreciated too.
>
> Kind regards, Keith.
>
>
> On 11 February 2017 at 16:37, Benjamin Busjaeger <busjaeger@gmail.com>
> wrote:
> > Is there a way to keep JMS WebSocket connections open (e.g., enable
> > ping/pong heartbeats)?
> >
> > I get the following error:
> >
> > javax.jms.JMSException: Transport connection remotely closed.
> >
> > at org.apache.qpid.jms.exceptions.JmsExceptionSupport.create(
> > JmsExceptionSupport.java:86)
> >
> > at org.apache.qpid.jms.exceptions.JmsExceptionSupport.create(
> > JmsExceptionSupport.java:108)
> >
> > at org.apache.qpid.jms.JmsConnection.onAsyncException(
> > JmsConnection.java:1385)
> >
> > at org.apache.qpid.jms.JmsConnection.onProviderException(
> > JmsConnection.java:1369)
> >
> > at org.apache.qpid.jms.JmsConnection.onConnectionFailure(
> > JmsConnection.java:1237)
> >
> > at org.apache.qpid.jms.provider.amqp.AmqpProvider.fireProviderException(
> > AmqpProvider.java:1015)
> >
> > at org.apache.qpid.jms.provider.amqp.AmqpProvider$20.run(
> > AmqpProvider.java:830)
> >
> > at java.util.concurrent.Executors$RunnableAdapter.
> call(Executors.java:511)
> >
> > at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> >
> > at
> > java.util.concurrent.ScheduledThreadPoolExecutor$
> ScheduledFutureTask.access$201(
> > ScheduledThreadPoolExecutor.java:180)
> >
> > at java.util.concurrent.ScheduledThreadPoolExecutor$
> ScheduledFutureTask.run(
> > ScheduledThreadPoolExecutor.java:293)
> >
> > at java.util.concurrent.ThreadPoolExecutor.runWorker(
> > ThreadPoolExecutor.java:1142)
> >
> > at java.util.concurrent.ThreadPoolExecutor$Worker.run(
> > ThreadPoolExecutor.java:617)
> >
> > at java.lang.Thread.run(Thread.java:745)
> >
> > Caused by: java.io.IOException: Transport connection remotely closed.
> >
> > ... 8 more
> >
> > With a relatively simple client program:
> >
> >             Context context = new InitialContext();
> >
> >
> >             ConnectionFactory factory = (ConnectionFactory)
> context.lookup(
> > "myFactoryLookup");
> >
> >             Destination queue = (Destination)
> context.lookup("myQueueLookup"
> > );
> >
> >
> >             Connection connection = factory.createConnection("admin",
> > "admin");
> >
> >             connection.setExceptionListener(new MyExceptionListener());
> >
> > //            connection.start();
> >
> >
> >             Session session = connection.createSession(false, Session.
> > AUTO_ACKNOWLEDGE);
> >
> >             session.createProducer(queue);
> >
> >             Thread.sleep(360000);
> >
> > jndi properties:
> >
> > java.naming.factory.initial =
> > org.apache.qpid.jms.jndi.JmsInitialContextFactory
> >
> > connectionfactory.myFactoryLookup = amqpws://localhost
> > :5000?amqp.vhost=default&amqp.idleTimeout=3600000
> >
> > queue.myQueueLookup = Q1
> >
> > Server version: qpid - 6.1.1 build: 1775107 (AMQP version(s)
> [major.minor]:
> > 0-8, 0-9, 0-9-1, 0-10, 1.0)
> > Client version: qpid-jms-client-0.20.0 with proton-j-0.16.0
> >
> > Thanks,
> > Ben
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> For additional commands, e-mail: users-help@qpid.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message