Setting the Keep-Alive Parameters
To specify the behavior of the Broker's keep-alive feature, use the BrokerConnectionDescriptor.setKeepAlive method. This method sets the following parameters in the BrokerConnectionDescriptor object:
KeepAlivePeriod. The number of seconds of idle time the
Broker waits before issuing a keep-alive message to a client. To suppress keep-alive messages entirely, set
KeepAlivePeriod to Integer.MAX_VALUE.
MaxResponseTime. The number of seconds the
Broker waits for a response from the client after issuing a keep-alive message. This value must be greater than 0 and less that the Keep-Alive Period. Set the Max Keep-Alive Response Time to Integer.MAX_VALUE to specify an infinite response time.
RetryCount. The number of times the
Broker resends a keep-alive message to a non-responsive client before disconnecting that client.
How you configure the keep-alive settings depends upon the reason for which you are using keep-alive.
For zombie session removal, you set a fairly short keep-alive interval, typically in seconds, so that you can quickly remove any zombie sessions.
For keeping the connection open through firewalls, you set a keep-alive interval closely matching the firewall time-out period, which is typically in minutes. This prevents the firewall from shutting down the connection because of inactivity.
The following code fragment uses the setKeepAlive method to specify a KeepAlivePeriod of 90 seconds, a MaxResponseTime of 30 seconds, and a RetryCount of 5.
BrokerConnectionDescriptor desc;
/* Create descriptor */
desc = new BrokerConnectionDescriptor();
desc.setKeepAlive(90,30,5);
Be aware that different combinations of the KeepAlivePeriod, MaxResponseTime, and RetryCount produce distinctly different behaviors. For details, see the parameter descriptions for the BrokerConnectionDescriptor.setKeepAlive method.
Important:
Client keep-alive uses server resources. If you have a large number of clients, the Broker Server may become bogged down servicing these requests. In situations such as these, increasing the default keep-alive period may be necessary. Make sure to set the keep-alive values appropriately and do not over-use the feature.