blob: 0ce2decc09a1bfd324a8ac2ecd64a3d6ea8dde98 [file] [log] [blame]
/*
# Licensed Materials - Property of IBM
# Copyright IBM Corp. 2015,2016
*/
package quarks.samples.topology;
import java.lang.management.ManagementFactory;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import javax.management.MBeanServer;
import javax.management.ObjectInstance;
import javax.management.ObjectName;
import quarks.console.server.HttpServer;
import quarks.providers.development.DevelopmentProvider;
import quarks.topology.TStream;
import quarks.topology.Topology;
public class DevelopmentSampleJobMXBean {
public static void main(String[] args) throws Exception {
DevelopmentProvider dtp = new DevelopmentProvider();
Topology t = dtp.newTopology("DevelopmentSampleJobMXBean");
Random r = new Random();
TStream<Double> d = t.poll(() -> r.nextGaussian(), 100, TimeUnit.MILLISECONDS);
d.sink(tuple -> System.out.print("."));
dtp.submit(t);
System.out.println(dtp.getServices().getService(HttpServer.class).getConsoleUrl());
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
StringBuffer sbuf = new StringBuffer();
sbuf.append(DevelopmentProvider.JMX_DOMAIN);
sbuf.append(":interface=");
sbuf.append(ObjectName.quote("quarks.execution.mbeans.JobMXBean"));
sbuf.append(",type=");
sbuf.append(ObjectName.quote("job"));
sbuf.append(",*");
System.out.println("Looking for MBeans of type job: " + sbuf.toString());
ObjectName jobObjName = new ObjectName(sbuf.toString());
Set<ObjectInstance> jobInstances = mBeanServer.queryMBeans(jobObjName, null);
Iterator<ObjectInstance> jobIterator = jobInstances.iterator();
while (jobIterator.hasNext()) {
ObjectInstance jobInstance = jobIterator.next();
ObjectName objectName = jobInstance.getObjectName();
String jobId = (String) mBeanServer.getAttribute(objectName, "Id");
String jobName = (String) mBeanServer.getAttribute(objectName, "Name");
String jobCurState = (String) mBeanServer.getAttribute(objectName, "CurrentState");
String jobNextState = (String) mBeanServer.getAttribute(objectName, "NextState");
String jobHealth = (String) mBeanServer.getAttribute(objectName, "Health");
String jobLastError = (String) mBeanServer.getAttribute(objectName, "LastError");
System.out.println("Found a job with JobId: " + jobId + " Name: " + jobName +
" CurrentState: " + jobCurState + " NextState: " + jobNextState +
" Health: " + jobHealth + " LastError: \"" + jobLastError + "\"");
}
}
}