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就不执行了,不知道怎么回事
这是个阻塞,你可以在这里看到相关说明:https://www.orchome.com/10
while (it.hasNext()) ,基本上这段代码一直向kafka读取消息,直到你停止它。
可是kafka没消息不就不执行循环体而执行后面了吗?
是不会执行后面的,在while里调用你的处理。
这样子啊,没消息之后,他就会阻塞,然后时间过了就直接停止是吗?
不会自己停止,它无线的循环到集群中拉取消息。
如果这样子,假设有kafka中的三个message是三个文件,
1,在while里面拿出来一个就readline()操作,直到读完这个文件,再去读第二个文件。这是我现在实现的。
2,在while里面拿出来一个文件先存起来,比如放在list里面,等while循环完,从list里面拿来readline。这是我想做的,但是发现while循环完后,后面的程序不走了。代码是demo带的不知为啥不走
另开辟一个问题吧,没看懂,把你的问题和想要什么效果描述一下。附上代码。
你的答案