2016-03-18 16 views
6

Konu ağacını oluşturan bir Diffusion çözümü yapıyorum.Abonesi olmadığı zaman bir konu nasıl kaldırılır?

RabbitMQ beslemesinden alınan değerleri yansıtmak için istek üzerine içerikler oluşturuyorum. Her konunun bir bellek maliyeti vardır, bu yüzden bir süre abonesi olmadığında konuyu kaldırmaya çalışıyorum.

Bu, birleştirilmiş Java API'sı ile nasıl yapılabilir?

+0

Özgün sıradan veya ağacınızdan kaldırılsın mı? Ayrıca, bir iskelet kodunu bile yazmayı denediyseniz, lütfen sorunuza ekleyin ([değiştir] kullanarak). –

cevap

6

TopicEventListener (TopicControl özelliğinin bir parçası) bu işlevi sağlar. Bir konunun 0 abonesi olduğunda, ayrıca bir konunun en az 1 aboneye sahip olduğu zamanlar için bireysel geri bildirimler sağlama.

Örnek: Bu yardımcı olur

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"); 
      } 
     }); 
    } 

Umut!

+0

Sorunu çözdüğünüz bu hızlı yanıt için çok teşekkür ederim! –

İlgili konular