2016-03-18 9 views
6

मैं एक डिफ्यूजन समाधान बना रहा हूं जो विषयों का पेड़ बनाते हैं।कोई विषय नहीं है जब कोई ग्राहक नहीं है?

मैं एक RabbitMQ फ़ीड से प्राप्त मूल्यों को दर्शाने के लिए मांग पर विषय बना रहा हूं। प्रत्येक विषय में स्मृति लागत होती है, इसलिए कुछ समय के लिए कोई ग्राहक नहीं होने के बाद मैं विषय को हटाना चाहता हूं।

यह एकीकृत जावा एपीआई के साथ कैसे किया जा सकता है?

+0

मूल कतार से या अपने पेड़ से निकालें? इसके अलावा यदि आप पहले से ही एक कंकाल कोड लिखने की कोशिश कर चुके हैं, तो कृपया इसे अपने प्रश्न में जोड़ें (संपादित करें] [संपादित करें]। –

उत्तर

6

TopicEventListener (TopicControl सुविधा का हिस्सा) इस कार्यक्षमता प्रदान करता है। किसी विषय के 0 ग्राहक होने के साथ-साथ जब किसी विषय में कम से कम 1 ग्राहक होता है तो व्यक्तिगत कॉलबैक प्रदान करना।

उदाहरण:

public TopicEventListenerClient() { 
     session = Diffusion.sessions().principal("admin").password("password").open("ws://localhost:8080"); 
     topicControl = session.feature(TopicControl.class); 
     topicControl.addTopicEventListener("rabbitMQ/foo", new TopicEventListener() { 

      @Override 
      public void onClose(String arg0) { 
       LOG.info("Listener closed"); 
      } 

      @Override 
      public void onError(String arg0, ErrorReason arg1) { 
       LOG.info("Error on listener: " + arg1); 
      } 

      @Override 
      public void onRegistered(String arg0, Registration arg1) { 
       LOG.info("Listener registered"); 
      } 

      @Override 
      public void onHasSubscribers(String arg0) { 
       LOG.info("Topic: " + arg0 + " has at least 1 subscriber"); 
      } 

      @Override 
      public void onNoSubscribers(String arg0) { 
       LOG.info("Topic: " + arg0 + " has no subscribers"); 
      } 
     }); 
    } 

आशा इस मदद करता है!

+0

इस तरह की त्वरित प्रतिक्रिया के लिए बहुत बहुत धन्यवाद, जिसने इस मुद्दे को हल किया! –

संबंधित मुद्दे