如何在没有订阅者的情况下删除主题?

Dav*_*say 5 java api rabbitmq push-diffusion

我正在构建一个扩散解决方案,创建一个主题树.

我正在按需创建主题以反映从RabbitMQ订阅源收到的值.每个主题都有一个内存成本,所以我希望一旦它没有订阅者一段时间就删除该主题.

如何使用统一的Java API完成这项工作?

dim*_*jio 9

所述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");
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!