代码持续更新中
package lesson;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Map;
import org.apache.storm.spout.SpoutOutputCollector;
import org.apache.storm.task.TopologyContext;
import org.apache.storm.topology.IRichSpout;
import org.apache.storm.topology.OutputFieldsDeclarer;
import org.apache.storm.tuple.Fields;
import org.apache.storm.tuple.MessageId;
import org.apache.storm.tuple.Values;
public class Myspout implements IRichSpout{
/**
*
*/
private static final long serialVersionUID = 1L;
FileInputStream fis;
InputStreamReader isr;
BufferedReader br;
SpoutOutputCollector collector = null;
@Override
public void ack(Object magId) {
// TODO 自动生成的方法存根
System.out.print("spout ack"+magId.toString());
}
@Override
public void activate() {
// TODO 自动生成的方法存根
}
@Override
public void deactivate() {
// TODO 自动生成的方法存根
}
@Override
public void fail(Object magId) {
// TODO 自动生成的方法存根
System.out.print("spout fail"+magId.toString());
}
String str =null;
@Override
public void nextTuple() {
// TODO 自动生成的方法存根
try {
while ((str = this.br.readLine()) != null) {
//过滤动作
collector.emit(new Values(str));
Thread.sleep(3000);
//to do
}
} catch (Exception e) {
// TODO 自动生成的 catch 块
}
}
@Override
public void close() {
// TODO 自动生成的方法存根
try {
br.close();
isr.close();
fis.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
@Override
public void open(Map conf, TopologyContext arg1, SpoutOutputCollector collector) {
// TODO 自动生成的方法存根
try {
this.collector = collector;
this.fis = new FileInputStream("track.log");
this.isr = new InputStreamReader(fis,"UTF-8");
this.br = new BufferedReader(isr);
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
@Override
public void declareOutputFields(OutputFieldsDeclarer declarer) {
// TODO 自动生成的方法存根
declarer.declare(new Fields("log"));
}
@Override
public Map<String, Object> getComponentConfiguration() {
// TODO 自动生成的方法存根
return null;
}
}