public class MessageTopology {
public static void main(String[] args) throws Exception {
//声明节点
MessageSpout messageSpout = new MessageSpout();
SpliterBolt splitBolt = new SpliterBolt();
PrintBolt printBolt = new PrintBolt();
//构建拓扑
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("spout_id", messageSpout);
builder.setBolt("splitBolt_id", splitBolt,1).shuffleGrouping("spout_id");
builder.setBolt("printBolt_id", printBolt,1).shuffleGrouping("splitBolt_id");
Config cfg =new Config();
cfg.setDebug(true);
cfg.setNumWorkers(2);
LocalCluster cluster = new LocalCluster();
cluster.submitTopology("topo1", cfg, builder.createTopology());
Thread.sleep(20000);
cluster.shutdown();
}
}
MessageTopology类 主要做的事情:
1. 声明数据来源 MessageSpout, 声明字符拆分处理 SpliterBolt, 声明 字符持久化处理 printBolt
2. 按 spout --> splitBolt ---> printBolt 顺序构建拓扑
3. 本地提交执行拓扑
public class MessageSpout extends BaseRichSpout{
private static final long serialVersionUID = 1L;
private SpoutOutputCollector conllector;
private boolean flag = false;
private String[] subjec