public void Launch() { Context.Logger.Info("[Bolt] Launch ..."); ApacheStorm.ctx = new BoltContext(); IPlugin iPlugin = this._createDelegate(ApacheStorm.ctx); if (!(iPlugin is IBolt)) { Context.Logger.Error("[Bolt] newPlugin must return IBolt!"); } this._bolt = (IBolt)iPlugin; try { //call Prepare method. this._bolt.Prepare(Context.Config, Context.TopologyContext); while (true) { StormTuple tuple = ApacheStorm.ReadTuple(); if (tuple.IsHeartBeatTuple()) { ApacheStorm.Sync(); } else { this._bolt.Execute(tuple); } } } catch (Exception ex) { Context.Logger.Error(ex.ToString()); } }
public void Launch() { Context.Logger.Info("[Spout] Launch ..."); ApacheStorm.ctx = new SpoutContext(); IPlugin iPlugin = this._createDelegate(ApacheStorm.ctx); if (!(iPlugin is ISpout)) { Context.Logger.Error("[Spout] newPlugin must return ISpout!"); } this._spout = (ISpout)iPlugin; //call Open method. this._spout.Open(Context.Config, Context.TopologyContext); Stopwatch stopwatch = new Stopwatch(); while (true) { try { stopwatch.Start(); Command command = ApacheStorm.ReadCommand(); if (command.command == "next") { this._spout.NextTuple(); } else if (command.command == "ack") { long seqId = long.Parse(command.id); this._spout.Ack(seqId); } else if (command.command == "fail") { long seqId = long.Parse(command.id); this._spout.Fail(seqId); } else { Context.Logger.Error("[Spout] unexpected message."); } ApacheStorm.Sync(); stopwatch.Stop(); } catch (Exception ex) { Context.Logger.Error(ex.ToString()); } } }