kafka旧高级消费者实例阻塞问题

克里斯蒂安 发表于: 2016-07-29   最后更新时间: 2016-07-29 14:36:16   4,498 游览

0.8的高级消费者中,有一段这样的代码:

    ConsumerIterator<byte[], byte[]> it = m_stream.iterator();
    while (it.hasNext()){
        System.out.println("Thread " + m_threadNumber + ": " + new String(it.next().message()));
    }
    System.out.println("Shutting down Thread: " + m_threadNumber);

当while循环不执行后,后面的输出shut down就不执行了,不知道怎么回事

发表于 2016-07-29

这是个阻塞,你可以在这里看到相关说明:https://www.orchome.com/10

while (it.hasNext()) ,基本上这段代码一直向kafka读取消息,直到你停止它。

可是kafka没消息不就不执行循环体而执行后面了吗?

是不会执行后面的,在while里调用你的处理。

这样子啊,没消息之后,他就会阻塞,然后时间过了就直接停止是吗?

不会自己停止,它无线的循环到集群中拉取消息。

如果这样子,假设有kafka中的三个message是三个文件,
1,在while里面拿出来一个就readline()操作,直到读完这个文件,再去读第二个文件。这是我现在实现的。
2,在while里面拿出来一个文件先存起来,比如放在list里面,等while循环完,从list里面拿来readline。这是我想做的,但是发现while循环完后,后面的程序不走了。代码是demo带的不知为啥不走

另开辟一个问题吧,没看懂,把你的问题和想要什么效果描述一下。附上代码。

你的答案

查看kafka相关的其他问题或提一个您自己的问题