SendMetric.java 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package com.redhat.training.sender;
  2. import java.lang.management.ManagementFactory;
  3. import java.lang.management.ThreadMXBean;
  4. import javax.jms.Connection;
  5. import javax.jms.ConnectionFactory;
  6. import javax.jms.JMSException;
  7. import javax.jms.MessageProducer;
  8. import javax.jms.Queue;
  9. import javax.jms.Session;
  10. import javax.jms.TextMessage;
  11. import javax.naming.InitialContext;
  12. import javax.naming.NamingException;
  13. import org.slf4j.Logger;
  14. import org.slf4j.LoggerFactory;
  15. public class SendMetric {
  16. public static void main(String... args) {
  17. Logger LOG = LoggerFactory.getLogger(SendMetric.class);
  18. // prepare metrics objects
  19. ThreadMXBean thr = ManagementFactory.getThreadMXBean();
  20. long processId = ManagementFactory.getRuntimeMXBean().getPid();
  21. long threadId = Thread.currentThread().getId();
  22. long oldTime = 0;
  23. // declare JMS objects
  24. InitialContext ctx;
  25. ConnectionFactory cf;
  26. Connection c;
  27. Session s;
  28. MessageProducer mp;
  29. Queue q;
  30. try {
  31. ctx = new InitialContext();
  32. cf = (ConnectionFactory)ctx.lookup("ConnectionFactory");
  33. q = (Queue)ctx.lookup("queue/metrics");
  34. } catch (NamingException ne) {
  35. ne.printStackTrace();
  36. return;
  37. }
  38. try {
  39. c = cf.createConnection();
  40. c.start();
  41. s = c.createSession();
  42. mp = s.createProducer(q);
  43. } catch (JMSException je) {
  44. je.printStackTrace();
  45. return;
  46. }
  47. while (true) {
  48. long newTime = thr.getThreadCpuTime(threadId);
  49. String report = processId + "[" + threadId + "]: Current CPU time: " + (newTime - oldTime);
  50. LOG.info(report);
  51. try {
  52. TextMessage tm = s.createTextMessage(report);
  53. mp.send(tm);
  54. } catch (JMSException je) {
  55. je.printStackTrace();
  56. }
  57. oldTime = newTime;
  58. try {
  59. Thread.sleep(1000);
  60. } catch (InterruptedException e) {
  61. e.printStackTrace();
  62. }
  63. }
  64. }
  65. }