On Mon, Aug 19, 2013 at 4:57 PM, Jerry Cwiklik <cwik...@us.ibm.com> wrote:

> What are the consequences of using closeAsync="false"?



Setting async to false means that the socket close call is blocking and is
not handled in a separate thread.

This is preferable and common in web applications where STOMP clients, say,
will open a connection in the context of a web request, send a message,
then close the connection. Depending on the amount of web requests being
handled this translates into a lot of connect/disconnect traffic for the
broker.

It can take up to 30 seconds (on Linux systems, unless otherwise
configured) for a socket that's been 'closed' for its descriptor to be made
available for a new socket. If the close were made asynchronous then, as
you've seen, socket open requests are being made at a faster rate than
closed sockets can be recycled. Making the close operation synchronous
forces the client to block until it completes, thus controlling the number
of open requests keeping the descriptor count manageable.

What OS are you running your broker on? Please give more detail about your
clients, e.g., are they STOMP based etc? If they're STOMP based you might
want to consider configuring the STOMP transport connector to managed over
NIO for greater efficiency.

Thanks,
Paul

Reply via email to