View Javadoc

    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements. See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache license, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License. You may obtain a copy of the License at
    8    *
    9    *      http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the license for the specific language governing permissions and
    15   * limitations under the license.
    16   */
    17
    18  package org.apache.logging.log4j.core.net.mom.jms;
    19
    20  import java.io.BufferedReader;
    21  import java.io.InputStreamReader;
    22  import java.nio.charset.Charset;
    23
    24  import org.apache.logging.log4j.core.net.server.JmsServer;
    25
    26  /**
    27   * Receives Topic messages that contain LogEvents. This implementation expects that all messages
    28   * are serialized log events.
    29   */
    30  public class JmsTopicReceiver {
    31
    32      /**
    33       * Main startup for the receiver.
    34       * @param args The command line arguments.
    35       * @throws Exception if an error occurs.
    36       */
    37      public static void main(final String[] args) throws Exception {
    38          if (args.length != 4) {
    39              usage("Wrong number of arguments.");
    40          }
    41
    42          final String tcfBindingName = args[0];
    43          final String topicBindingName = args[1];
    44          final String username = args[2];
    45          final String password = args[3];
    46          final JmsServer server = new JmsServer(tcfBindingName, topicBindingName, username, password);
    47          server.start();
    48
    49          final Charset enc = Charset.defaultCharset();
    50          final BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in, enc));
    51          // Loop until the word "exit" is typed
    52          System.out.println("Type \"exit\" to quit JmsTopicReceiver.");
    53          while (true) {
    54              final String line = stdin.readLine();
    55              if (line == null || line.equalsIgnoreCase("exit")) {
    56                  System.out.println("Exiting. Kill the application if it does not exit "
    57                      + "due to daemon threads.");
    58                  server.stop();
    59                  return;
    60              }
    61          }
    62      }
    63
    64      private static void usage(final String msg) {
    65          System.err.println(msg);
    66          System.err.println("Usage: java " + JmsTopicReceiver.class.getName()
    67              + " TopicConnectionFactoryBindingName TopicBindingName username password");
    68          System.exit(1);
    69      }
    70  }