spring-bootsolace

Springboot application unable to recover after jms connection failure


We have a sprinboot application which stops retrying to connect with solace queues after 3 connection attempts. We get below information logged and then application just does not respond and we have to restart the application:

2021-09-15 16:49:08.021  INFO 4444 --- [recovery-thread] bitronix.tm.recovery.Recoverer           : recoverer is already running, abandoning this recovery request
2021-09-15 16:50:04.862  INFO 4444 --- [connect_service] c.s.j.protocol.impl.TcpClientChannel     : Connection attempt failed to host '<<hostname>>' ReconnectException com.solacesystems.jcsmp.JCSMPSecurityException: Error performing login to LoginContext (*****) cause: javax.security.auth.login.LoginException: *****
2021-09-15 16:50:07.865  INFO 4444 --- [connect_service] c.s.j.protocol.impl.TcpClientChannel     : Connecting to host 'orig=tcp://<<hostname>>:55555, scheme=tcp://, host=<<hostname>>, port=55555' (host 1 of 1, smfclient 2, attempt 3 of 3, this_host_attempt: 1 of 1)
2021-09-15 16:50:07.877  INFO 4444 --- [connect_service] c.s.j.protocol.impl.TcpClientChannel     : Connection attempt failed to host '<<hostname>>' ReconnectException com.solacesystems.jcsmp.JCSMPSecurityException: Error performing login to LoginContext (*****) cause: javax.security.auth.login.LoginException: *****
2021-09-15 16:50:10.878  INFO 4444 --- [connect_service] c.s.j.protocol.impl.TcpClientChannel     : Stale reconnect task, aborting reconnect.

Below is our configuration for connecting to solace queues:

spring.jta.bitronix.connectionfactory.className=com.solacesystems.jms.SolXAConnectionFactoryImpl
spring.jta.bitronix.connectionfactory.driverProperties.host=smf://<<hostname>>:55555
spring.jta.bitronix.connectionfactory.driverProperties.VPN=<<vpn>>
spring.jta.bitronix.connectionfactory.driverProperties.authenticationScheme=AUTHENTICATION_SCHEME_GSS_KRB
spring.jta.bitronix.connectionfactory.driverProperties.KRBServiceName=HOST

In our service class we are just autowiring the object of jmsTemplate and publishing messages on the queue.

I went through few documentations and tried adding below configuration:

spring.jta.bitronix.connectionfactory.ignore-recovery-failures=true

But still I am facing the same issue. Any suggestions

====Edit

I face this issue only when I put my laptop in airplane mode and reconnect. If I just disconnect from VPN and connect back solace connection is getting reestablished


Solution

  • After going through the various documentations and doing some hit and trials, below properties turn out too be useful. Hope it can help somebody:

    spring.jta.bitronix.connectionfactory.driverProperties.reconnectRetries = -1
    spring.jta.bitronix.connectionfactory.driverProperties.connectRetries = -1