Job startJobMonitorApp() throws InterruptedException, ExecutionException {
  Topology topology=dp.newTopology("JobMonitorApp");
  TStream<JsonObject> jobEvents=JobEvents.source(topology,null);
  jobEvents.sink(null);
  Future<Job> f=dp.submit(topology);
  return f.get();
}

Job startJobMonitorApp ( ) throws InterruptedException , ExecutionException { Topology topology = dp . newTopology ( "JobMonitorApp" ) ; TStream < JsonObject > jobEvents = JobEvents . source ( topology , null ) ; jobEvents . sink ( null ) ; Future < Job > f = dp . submit ( topology ) ; return f . get ( ) ; }
monitoring application generates tuples on job registrations , removals , and on registered job updates .
