我想将一个spout实现为Socket Listener。为了检查阻塞过程如何在风暴中起作用,我将Scanner.in
WordCounter示例的spout作为folows
public void nextTuple() {
/**
* The nextuple it is called forever, so if we have been readed the file
* we will wait and then return
*/
Scanner scanner=new Scanner(System.in);
scanner.next();
/* Code to read from file */
}
当我尝试运行时会发生一些错误。如果我删除扫描仪代码,示例运行正常。有人能告诉我在风暴中如何处理阻塞过程?
答案 0 :(得分:3)
在发出元组时使用的主要方法是nextTuple。所有spout方法都由同一个线程调用。如果在nextTuple中有任何阻塞,那么spout将无法发送心跳以确保其存活。因此,我建议你使用无阻塞功能。