2016-03-18 6 views
6

トピックのツリーを作成する拡散ソリューションを構築しています。サブスクライバがないときにトピックを削除するにはどうすればよいですか?

私は、RabbitMQフィードから受け取った値を反映するために必要に応じてトピックを作成しています。各トピックにはメモリコストがありますので、しばらくの間はサブスクライバがいなくなったらトピックを削除したいと考えています。

統一されたJava APIを使用するとどうしたらいいですか?

+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

このような迅速な対応をいただきありがとうございます。 –

関連する問題