Yes JMX Still shown connection is open. I am not getting any exception for 
same. Previously I was receiving exception for same, So that time 
connection automatically get reestablished. 

Thanks & Regards,
Tejas Ramchandra Sawant
Tata Consultancy Services Ltd.
QBPL, Phase-2, Hinjewadi
Pune, Maharashtra.
cell : +91-8055946458
Mailto: tejas.sawa...@tcs.com
Website:http://www.tcs.com

____________________________________________
Experience certainty.        IT Services
                       Business Solutions
                       Consulting
____________________________________________ 



From:   "Tim Bain [via ActiveMQ]" <ml+s2283324n4728484...@n4.nabble.com>
To:     tejas13 <tejas.sawa...@tcs.com>
Date:   07/12/2017 12:34 PM
Subject:        Re: Active Durable Subscriber status automatically 
changing to offline Durable Subscriber [5.14.1 Most Stable Version]



When your subscriber shows as being offline, does JMX still show that the 
connection is open? Or are you indeed closing the connection? 

Tim 

On Jul 12, 2017 12:39 AM, "tejas13" <[hidden email]> wrote: 

> 
> Hi All, 
> 
> Thank in Advance. 
> 
> Previously we were using version 5.12.0. That time my code was working 
> fine. 
> Subscriber never get offline automatically. 
> 
> Recently we upgraded to version 5.14.5 as most stable version and new 
> features 
> 
> I found that my Active Durable Subscriber status is changing 
automatically 
> to offline Durable Subscriber. 
> 
> I am using below code for connection. 
> 
> public class ReceiverFor_ECRE_TO_SEQ_Topic { 
>         private static final Logger logger = 
> Logger.getLogger(ReceiverFor_ECRE_TO_SEQ_Topic.class); 
> 
>         private TopicSession qsen = null; 
>         private String JNDI_PROVIDER_URL = null; 
>         private String topicName = null; 
>         private String jmsUid = null; 
>         private String jmsPwd = null; 
>         private Topic topic = null; 
>         private ConnectionFactory connFactory; 
>         private TopicConnection queueConn; 
> 
>         public ReceiverFor_ECRE_TO_SEQ_Topic(String topicName, String 
> JNDI_PROVIDER_URL, String jmsUid, String jmsPwd) { 
>                 this.topicName = topicName; 
>                 this.JNDI_PROVIDER_URL = JNDI_PROVIDER_URL; 
>                 this.jmsUid = jmsUid; 
>                 this.jmsPwd = jmsPwd; 
>         } 
> 
>         public void listenTopic() { 
>                 try { 
>                         Properties env = new Properties(); 
>                         env.put(Context.INITIAL_CONTEXT_FACTORY, 
> Constants.INITIAL_CONTEXT_FACTORY); 
>                         env.put(Context.PROVIDER_URL, 
> System.getProperty(Context.PROVIDER_URL, 
> JNDI_PROVIDER_URL)); 
>                         env.put(Context.SECURITY_PRINCIPAL, jmsUid); 
>                         env.put(Context.SECURITY_CREDENTIALS, jmsPwd); 
> env.setProperty("prefetchPolicy.durableTopicPrefetch", 
> "1000"); 
>                         InitialContext inictx = new InitialContext(env); 

> 
>                         // lookup the queue object 
>                         topic = (Topic) inictx.lookup(topicName); 
>                         // lookup the topic connection factory 
>                         connFactory = (ConnectionFactory) 
> inictx.lookup(Constants.CONN_FACTORY); 
> 
>                         // System.out.println("1"); 
>                         if (setupJMS()) { 
> 
>                                 isJMSConnected = true; 
>                                 /* 
>                                  * while(true) { } 
>                                  */ 
>                         } else { 
> 
>                                 listenTopic(); 
> 
>                         } 
>                 } catch (NamingException ex) { 
>                         // ex.printStackTrace(); 
>                         logger.error("Unable to connect Server for ECRE 
> Topic"); 
> 
>                         try { 
>                                 Thread.sleep(5000); 
>                                 listenTopic(); 
>                         } catch (InterruptedException ex1) { 
>                                 // ex.printStackTrace(); 
>                                 logger.error("Unable to connect  Server 
> for ECRE Topic"); 
>                         } 
>                 } 
>         } 
> 
>         public boolean setupJMS() 
>         { 
>                 try { 
> 
>                         // create a queue connection 
>                         String consumerName = 
> ResourceBundleHelper.applicationData.get(ApplicationConstants.ECRE_TO_ 
> SEQ_TOPIC_CONSUMER_Id); 
> 
>                         queueConn = (TopicConnection) 
> connFactory.createConnection(); 
>                         queueConn.setClientID(consumerName); 
> 
>                         // create a queue session 
>                         // if (null == this.qsen) 
>                         { 
>                                 this.qsen = 
queueConn.createTopicSession( 
> false, 
> Session.CLIENT_ACKNOWLEDGE); 
>                         } 
>                         this.queueConn.setExceptionListener(new 
> ConnectionExceptionListner()); 
>                         MessageListenerFor_ECRE_TO_SEQ_Topic temp = new 
> MessageListenerFor_ECRE_TO_SEQ_Topic(); 
>                         // create a queue subscriber 
> 
>                         // MessageConsumer queueReceiver = 
> qsen.createConsumer(topic); 
>                         MessageConsumer queueReceiver = 
> qsen.createDurableSubscriber(topic, 
>                                         consumerName); 
> 
>                         queueReceiver.setMessageListener(temp); 
>                         queueConn.start(); 
>                 } catch (Exception e) 
>                 { 
>                         logger.error(" ReceiverFor_ECRE_TO_SEQ_Topic 
Setup 
> JMS Exception -" + 
> e.getMessage()); 
> 
>                         //System.gc(); 
>                         try 
>                         { 
>                                 Thread.sleep(60000); 
>                         } 
>                         catch(Exception er) 
>                         { 
>                                 logger.error("Exception occured in 
> Thread.sleep"); 
>                         } 
>                         return false; 
>                 } 
>                 return true; 
>         } 
> 
>         private volatile boolean isJMSConnected = false; 
> 
>         private class ConnectionExceptionListner implements 
> ExceptionListener { 
>                 @Override 
>                 public void onException(JMSException exception) { 
>                         isJMSConnected = false; 
> 
>                         while (true) { 
>                                 cleanUp(); 
>                                 isJMSConnected = setupJMS(); 
> 
>                                 if (isJMSConnected) 
>                                 { 
>                                                 return; 
>                                 } else { 
> 
>                                         try { 
>                                                 //System.gc(); 
> 
>                                                 Thread.sleep(2*60*1000); 

>                                         } catch (Exception e) { 
>                                                 System.out.println(" 
> "+e.getMessage()); 
>                                         } 
>                                 } 
>                         } 
>                 } 
>         } 
> 
>         private void cleanUp() { 
>                 try { 
>                         this.queueConn.setExceptionListener(null); 
>                 } catch (Exception e) { 
>                         // System.out.println("Exception in cleanUP()" + 

> e.getMessage()); 
>                         logger.error(" ReceiverFor_ECRE_TO_SEQ_Topic 
> Exception in JMS cleanUP()" 
> + e.getMessage()); 
> 
>                 } 
>                 try { 
>                         this.queueConn.close(); 
>                 } catch (Exception e) { 
>                         // System.out.println("Exception in connection 
> close()" + 
>                         // e.getMessage()); 
>                         logger.error(" ReceiverFor_ECRE_TO_SEQ_Topic 
> Exception in JMS connection 
> close()" + e.getMessage()); 
> 
>                 } 
>         } 
> 
> } 
> 
> 
> 
> 
> -- 
> View this message in context: http://activemq.2283324.n4. 
> nabble.com/Active-Durable-Subscriber-status-automatically-changing-to- 
> offline-Durable-Subscriber-5-14-1-Most-St-tp4728482.html 
> Sent from the ActiveMQ - User mailing list archive at Nabble.com. 
> 



If you reply to this email, your message will be added to the discussion 
below:
http://activemq.2283324.n4.nabble.com/Active-Durable-Subscriber-status-automatically-changing-to-offline-Durable-Subscriber-5-14-1-Most-St-tp4728482p4728484.html
 

To unsubscribe from Active Durable Subscriber status automatically 
changing to offline Durable Subscriber [5.14.1 Most Stable Version], click 
here.
NAML 
=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain 
confidential or privileged information. If you are 
not the intended recipient, any dissemination, use, 
review, distribution, printing or copying of the 
information contained in this e-mail message 
and/or attachments to it are strictly prohibited. If 
you have received this communication in error, 
please notify us by reply e-mail or telephone and 
immediately and permanently delete the message 
and any attachments. Thank you






--
View this message in context: 
http://activemq.2283324.n4.nabble.com/Active-Durable-Subscriber-status-automatically-changing-to-offline-Durable-Subscriber-5-14-1-Most-St-tp4728482p4728485.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to