Flemming Harms [
http://community.jboss.org/people/fharms] created the discussion
"Failover for JMS client takes too long and fail"
To view the discussion, visit:
http://community.jboss.org/message/625856#625856
--------------------------------------------------------------
Hi
I have problem I don't know how to solve. Sometimes the JMS client take to long to
failover and throw an exception on the client, this is not consistent but something we can
reproduce 6-10 times.
The servers is not stressed at all and the same goes for the client.
- 2 JBoss 5.1 servers running in a cluster
- 2 clients connect to a topic queue
- Messaging client 1.4.7.GA
- remoting 2.5.1
1) if I use the default values "remote-sslbisocket-service.xml" our client
thinks it's should failover on startup. This fail with an JMSException and In this
case we reconnect to the topic and after this every thing works fine. if I bring down one
of the servers, it fail over as expected. But because it fail on startup there is
possibility we miss messages because it use a minute to discover the failover didn't
work
2) if I change the values validatorPingTimeout to 10000 and validatorPingPeriod = 15000 we
are able to start our client with out the JMS client thinks it should failover and
messages are received. But if I bring down one of the two servers it fail in the failover
procedure with an JMSExeception
2011-09-10 07:37:11,801 [Thread-213] WARN
com.apc.dsmf.client.webservices.event.QueueRemoteEventServiceImpl - Failover event
FAILURE_DETECTED
2011-09-10 07:37:11,807 [Thread-213] WARN
com.apc.dsmf.client.webservices.event.QueueRemoteEventServiceImpl - Failover event
FAILOVER_STARTED
2011-09-10 07:38:19,319 [Thread-213] WARN
com.apc.dsmf.client.webservices.event.QueueRemoteEventServiceImpl - Failover event
FAILOVER_FAILED
2011-09-10 07:38:19,321 [Thread-213] ERROR
com.apc.dsmf.client.webservices.event.QueueRemoteEventServiceImpl - Got JMS Exception
javax.jms.JMSException: Failure on underlying remoting connection
at
org.jboss.jms.client.remoting.ConsolidatedRemotingConnectionListener.handleConnectionException(ConsolidatedRemotingConnectionListener.java:99)
at org.jboss.remoting.ConnectionValidator$1.run(ConnectionValidator.java:498)
client code :
TopicConnection connection = ((TopicConnectionFactory)
lookup).createTopicConnection();session =
connection.createTopicSession(true,Session.AUTO_ACKNOWLEDGE);Topic topic = (Topic)
context.lookup(JNDI_NAME_REMOTE_EVENT_TOPIC);subscriber =
session.createSubscriber(topic);subscriber.setMessageListener(this);connection.setExceptionListener(this);((JBossConnection)
connection).registerFailoverListener(this);connection.start();
---------------------------------------------------------------
remote-sslbisocket-service.xml :
<mbean code="org.jboss.remoting.transport.Connector"
name="jboss.messaging:service=Connector,transport=sslbisocket"
display-name="SSL Bisocket Transport Connector">
<attribute name="Configuration">
<config>
<invoker transport="sslbisocket">
<!-- There should be no reason to change these parameters - warning!
Changing them may stop JBoss Messaging working correctly
-->
<attribute name="marshaller"
isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
<attribute name="unmarshaller"
isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
<attribute name="dataType"
isParam="true">jms</attribute>
<attribute name="socket.check_connection"
isParam="true">false</attribute>
<attribute
name="serverBindAddress">${jboss.bind.address}</attribute>
<attribute
name="serverBindPort">4459</attribute>
<attribute name="clientSocketClass"
isParam="true">org.jboss.jms.client.remoting.ClientSocketWrapper</attribute>
<attribute
name="serverSocketClass">org.jboss.jms.server.remoting.ServerSocketWrapper</attribute>
<attribute
name="serverSocketFactory">jboss.messaging:service=ServerSocketFactory,type=SSL</attribute>
<attribute
name="clientConnectAddress">10.245.256.10</attribute>
<attribute
name="onewayThreadPool">org.jboss.jms.server.remoting.DirectThreadPool</attribute>
<!-- the following parameters are useful when there is a firewall
between client and server. Uncomment them if so.-->
<attribute name="numberOfCallRetries"
isParam="true">5</attribute>
<attribute name="pingFrequency"
isParam="true">30000</attribute>
<attribute name="pingWindowFactor"
isParam="true">71582</attribute>
<attribute name="generalizeSocketException"
isParam="true">true</attribute>
<!-- Now remoting supports socket write timeout configuration. Uncomment
this if you need it. -->
<!--
<attribute name="writeTimeout"
isParam="true">30000</attribute>
-->
<!-- End immutable parameters -->
<attribute name="stopLeaseOnFailure"
isParam="true">true</attribute>
<!-- Periodicity of client pings. Server window by default is twice this
figure -->
<attribute name="clientLeasePeriod"
isParam="true">10000</attribute>
<attribute name="validatorPingPeriod"
isParam="true">10000</attribute>
<attribute name="validatorPingTimeout"
isParam="true">5000</attribute>
<attribute name="failureDisconnectTimeout"
isParam="true">0</attribute>
<attribute
name="callbackErrorsAllowed">1</attribute>
<attribute
name="registerCallbackListener">false</attribute>
<attribute name="useClientConnectionIdentity"
isParam="true">true</attribute>
<attribute name="timeout"
isParam="true">0</attribute>
<!-- Max Number of connections in client pool. This should be
significantly higher than
the max number of sessions/consumers you expect -->
<attribute name="JBM_clientMaxPoolSize"
isParam="true">200</attribute>
<!-- The maximum time to wait before timing out on trying to write a
message to socket for delivery -->
<attribute name="callbackTimeout">10000</attribute>
<!-- Use these parameters to specify values for binding and connecting
control connections to
work with your firewall/NAT configuration -->
<attribute
name="secondaryBindPort">4462</attribute>
<attribute
name="secondaryConnectPort">4462</attribute>
</invoker>
<handlers>
<handler
subsystem="JMS">org.jboss.jms.server.remoting.JMSServerInvocationHandler</handler>
</handlers>
</config>
</attribute>
<depends>jboss.messaging:service=ServerSocketFactory,type=SSL</depends>
</mbean>
Catch 22, please help!!!
br
Flemming
--------------------------------------------------------------
Reply to this message by going to Community
[
http://community.jboss.org/message/625856#625856]
Start a new discussion in JBoss Messaging at Community
[
http://community.jboss.org/choose-container!input.jspa?contentType=1&...]