Skip to content
dennis zhuang edited this page May 29, 2013 · 4 revisions

某些情况下,你可能有需要遍历某个topic下所有消息的需求,这可以通过1.4.5新增的TopicBrowser来实现,一个简单的例子:

        final String topic = "meta-test";
        final TopicBrowser browser = sessionFactory.createTopicBrowser(topic);

        Iterator<Message> it = browser.iterator();
        while (it.hasNext()) {
            Message msg = it.next();
            System.out.println("message body:" + new String(msg.getData()));
        }

通过createTopicBrowser即可创建一个topic browser,这个方法同时有一个重载版本

createTopicBrowser(String topic, int maxSize, long timeout, TimeUnit timeUnit);

,可以设置请求的buffer大小,超时等。

TopicBrowser可以多次复用,每次iterator方法返回的都是一个全新的迭代器,它按照broker id,partition号的顺序遍历消息。

TopicBrowser.getPartitions()方法可以用来获取该topic下的所有分区信息。

TopicBrowser.shutdown()用来关闭topic browser,释放资源。

Clone this wiki locally