package drpc; import org.apache.storm.Config; import org.apache.storm.LocalCluster; import org.apache.storm.LocalDRPC; import org.apache.storm.StormSubmitter; import org.apache.storm.drpc.DRPCSpout; import org.apache.storm.drpc.ReturnResults; import org.apache.storm.generated.StormTopology; import org.apache.storm.topology.BasicOutputCollector; import org.apache.storm.topology.OutputFieldsDeclarer; import org.apache.storm.topology.TopologyBuilder; import org.apache.storm.topology.base.BaseBasicBolt; import org.apache.storm.tuple.Fields; import org.apache.storm.tuple.Tuple; import org.apache.storm.tuple.Values; import org.apache.storm.utils.DRPCClient; import org.apache.storm.utils.Utils; import java.util.Map; public class RuleV3 { public static class RuleBolt extends BaseBasicBolt { @Override public void declareOutputFields(OutputFieldsDeclarer declarer) { declarer.declare(new Fields("result", "return-info")); } @Override public void execute(Tuple tuple, BasicOutputCollector collector) { //DRPCSpout declarer.declare(new Fields("args", "return-info")); String funargs = tuple.getString(0);//args String retInfo = tuple.getString(1);//return-info String result = "How are you,"+funargs+"!"+retInfo; collector.emit(new Values(result, retInfo)); } } static StormTopology createTopology(DRPCSpout spout, RuleBolt bolt) { TopologyBuilder builder = new TopologyBuilder(); builder.setSpout("SPOUT_ID", spout);//streamId["default"] = [("args", "return-info")] builder.setBolt("RULE_ID",bolt).noneGrouping("SPOUT_ID");//streamId["default"] = [("id", "return-info")] builder.setBolt("RET_ID", new ReturnResults()).noneGrouping("RULE_ID"); StormTopology st = builder.createTopology(); return st; } public static void main(String[] args) throws Exception { Config cnf = new Config(); cnf.setDebug(false); cnf.setNumWorkers(1); if (args != null && args.length > 0) { if("pub".equals(args[0])) {//publish System.out.println("-------publish"); DRPCSpout spout = new DRPCSpout("rulev3"); RuleBolt bolt = new RuleBolt(); StormSubmitter.submitTopologyWithProgressBar("drpc_RuleV3", cnf, createTopology(spout, bolt)); }else{//remote run System.out.println("-------remote run "+args[0]); Map conf = Utils.readDefaultConfig(); String host = args[0];//192.168.2.210 @SuppressWarnings("resource") DRPCClient drpc = new DRPCClient(conf,host,3772); for(int i=0; i<100; i++){ System.out.println("------------------>"+drpc.execute("rulev3", "rulev3_order"+i+"json")); } drpc.close(); } } else {//local run System.out.println("-------Local run"); LocalDRPC drpc = new LocalDRPC(); LocalCluster cluster = new LocalCluster(); DRPCSpout spout = new DRPCSpout("rulev3", drpc); RuleBolt bolt = new RuleBolt(); cluster.submitTopology("drpc_RuleV3", cnf, createTopology(spout, bolt)); for(int i=0; i<100; i++){ System.out.println("------------------>"+drpc.execute("rulev3", "rulev3_order"+i+"json")); } Utils.sleep(1000000000); cluster.killTopology("drpc_RuleV3"); cluster.shutdown(); } } }
DRPC STORM example 网上好几个drpc的例子跑不通,还到处转载,这里放个跑得通的例子吧。
最新推荐文章于 2020-03-09 11:01:12 发布