package COM.activesw.tools.cmdline.extended; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Locale; import COM.activesw.api.client.BrokerAdminClient; import COM.activesw.api.client.BrokerEvent; import COM.activesw.tools.cmdline.Connector; import COM.activesw.tools.util.SSLHelper; /** * Read the specified trace events and prints out stdout */ public class BrokerTraceEventReader extends Connector { private String brokerhost = "localhost:6849"; private String broker = "Broker #1"; private List traces = new ArrayList<>(); private SSLHelper sslHelper = new SSLHelper(); private static String toolName = "BrokerTraceEventReader"; private static String outputFile = "BrokerTraceEventReader.log"; private static String VERSION = "1.0"; private static StringBuilder output = new StringBuilder(); public static void main(String[] args) { BrokerTraceEventReader instance = new BrokerTraceEventReader(); try { SimpleDateFormat timeStampFormat = new SimpleDateFormat("[EE MMM dd HH:mm:ss z yyyy]", Locale.ENGLISH); Date timeStampDate = new Date(); output.append(toolName + ", version - " + VERSION + "\n"); output.append("Time: " + timeStampFormat.format(timeStampDate) + "\n\n"); instance.parseArgs(args); output.append("\nConencting to server.." + instance.brokerhost + "\n\n"); BrokerAdminClient bac = null; try { bac = new BrokerAdminClient(instance.brokerhost, instance.broker, null, "admin", "Broker Trace Event Reader", null); for (String s : instance.traces) { bac.newSubscription(s, null); } while (true) { BrokerEvent[] events = bac.getEvents(100, -1); for (BrokerEvent e : events) { System.out.println(e.toString()); } } } catch (Exception e) { System.err.println(e.toString()); output.append(e.toString() + "\n"); } finally { if (bac != null) { bac.destroy(); } } } catch (Exception e) { System.err.println(e.toString()); output.append(e.toString() + "\n"); } output.append("\n" + toolName + " Completed.\n\n"); try { BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile, true)); writer.write(output.toString()); writer.close(); } catch (IOException ex) { ex.printStackTrace(); } System.out.println("\nOutput: " + outputFile); } // Parses the input arguments to utility. private void parseArgs(String[] args) { try { args = sslHelper.parseSSLArgs(args); } catch (IllegalArgumentException ex) { System.err.println(ex.getMessage()); System.err.println(); SSLHelper.printSSLUsage(); System.exit(1); } try { if (args.length == 0) { throw new Exception("Missing arguments"); } for (int i = 0; i < args.length; ++i) { if (args[i].equals("-host")) { ++i; if (i < args.length) { brokerhost = args[i]; } else { throw new Exception("Missing host name"); } } else if (args[i].equals("-broker")) { ++i; if (i < args.length) { broker = args[i]; } else { throw new Exception("Missing broker name"); } } else if (args[i].equals("-trace")) { ++i; if (i < args.length) { traces.add(args[i]); } else { throw new Exception("Missing queue name"); } } else if (args[i].equalsIgnoreCase("-help") || args[i].equalsIgnoreCase("-h") || args[i].equals("-?")) { usage(); System.exit(1); } else if (args[i].equalsIgnoreCase("-idhelp")) { SSLHelper.printSSLUsage(); System.exit(1); } else if (!args[i].equals("-u") && !args[i].equals("QueueExport")) { throw new Exception("Invalid Argument"); } } if (traces.size() == 0) { traces.add("Broker::Trace::Drop"); traces.add("Broker::Trace::DropRemote"); traces.add("Broker::Trace::Enqueue"); traces.add("Broker::Trace::EnqueueRemote"); traces.add("Broker::Trace::Publish"); traces.add("Broker::Trace::PublishRemote"); traces.add("Broker::Trace::Receive"); traces.add("Broker::Trace::ReceiveRemote"); traces.add("Broker::Trace::Peek"); traces.add("Broker::Trace::Insert"); traces.add("Broker::Trace::Delete"); } output.append("Utility arguments:\n"); output.append(" Broker host: " + brokerhost + "\n"); output.append(" Broker: " + broker + "\n"); output.append(" Traces: " + traces.toString() + "\n"); } catch (Exception e) { System.err.println(e.getMessage()); output.append(e.getMessage() + "\n"); usage(); System.exit(1); } } public void usage() { System.err.println(msg("BrokerTraceEventReader.usage")); } }