Storm可以保证每个Spout发射的消息会被所有的Bolt完全处理。这是设计时要考虑的因素,这意味着程序员将决定Bolt是否需要保证消息处理。
可靠Bolt的execute()方法如下:
@Override
public void execute(Tuple input) {
String sentence = input.getString(0);
for (String word : sentence.split(" ")){
collector.emit(input,new Values(word));//发射时带上元组
}
//手动调用ack()方法,保证消息处理成功
collector.ack(input);
}
不可靠Bolt的execute()方法如下:
@Override
public void execute(Tuple input) {
String sentence = input.getString(0);
for (String word : sentence.split(" ")){
collector.emit(new Values(word));
}
}
使用Anchoring机制实现可靠的Bolt
拓扑是一个消息(Tuple