activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dejan Bosanac <de...@nighttale.net>
Subject Re: Improved ActiveMQ Initscript
Date Wed, 11 Nov 2009 09:13:31 GMT
Hi Marc,

great work, thanks. Can you create Jira enhacement request with these files
attached and description. It'll make sure it doesn't get lost in the emails.

Thanks
--
Dejan Bosanac - http://twitter.com/dejanb

Open Source Integration - http://fusesource.com/
ActiveMQ in Action - http://www.manning.com/snyder/
Blog - http://www.nighttale.net


2009/11/10 Marc Schöchlin <marc@256bit.org>

> Hello ActiveMQ developers,
>
> i wrote a new initscript for running standalone activemq installations
> (see attached script).
>
> This script is originally based on the scripts  "activemq" and
> "activemq-admin" located in
> "assembly/src/release/bin/" and replaces both scripts.
>
> Read "usage-examples.txt" for  getting a first impression of the
> initscript.
>
> Features of the new script:
> - the script should be compatible with cygwin, macosx and most linux and
> unix systems
>  To ensure compatibility to macosx and cygwin it does not utilize lsb
> standard infrastructure for controlling daemons like
>  "start-stop-daemon".
>   (i tried to keep the shell-syntax compatible to most unix systems,
> but only tested on SLES11 and Ubuntu 9.10)
> - the complete functionality if "activemq-admin" is now included in
> "activemq"
>  (list, query, browse, ...)
> - all option not implemented by the initscript, are directly passed to
> the java-call
> - the configuration parameters can be located in
> /etc/default/activemq.conf or  $HOME/.activemqrc
> - the script supports operation of multiple instances on the same system
>  (if the script is symlinked/renamed to
> "activemq-instance-<INSTANCENAME>", the configuration
>  is searched on /etc/default/activemq-instance-<INSTANCENAME>.conf and
> $HOME/.activemqrc-instance-<INSTANCENAME>)
> - in case of syntax-errors in the configuration, the execution is stopped
> - a template configuration for the script can be created by using the
> "setup" option
> - activemq configuration- and data-dir (e.g. kahadb, tmpstorage) are
> configurable
> - configuration hints for jmx (because of non-available
> "VirtualMachine.attach(PID)", especially needed when using a ibm jvms)
> - improved shutdown procedure: script invokes shutdown by a jmx-request,
> if process does not disappear
>  after a configurable timeout, the process is killed by SIGKILL (-9)
> - start activemq daemon as an background process : option "start"
> - start activemq daemon without daemonizing the daemon: option "fgstart"
> - usage of PID files to determine running activemq instances
> - the "status" option, checks if there is a running activemq instance
>  (this is useful for using activemq with high-availability tools)
> - the script outputs usage-information if it is invoked without any option
>  (usage of the java binary combined with the script-usage)
>
> In my opinion it would be good/nice:
> - if this script is will be tested on several unix-systems and on cygwin
> - to provide the possibility to configure the entire jmx-setup in
> activemq.xml or jetty.xml
>  (if jetty provides this)
> - it would be nice if the java code supports daemonizing
> - if this script will be part of activemq, we should adapt the wiki pages
>
> Feedback and improvement ideas are very welcome :-)
>
> Best regards
> Marc Schoechlin
>
>
> #!/bin/sh
> # ------------------------------------------------------------------------
> # Licensed to the Apache Software Foundation (ASF) under one or more
> # contributor license agreements.  See the NOTICE file distributed with
> # this work for additional information regarding copyright ownership.
> # The ASF licenses this file to You under the Apache License, Version 2.0
> # (the "License"); you may not use this file except in compliance with
> # the License.  You may obtain a copy of the License at
> #
> # http://www.apache.org/licenses/LICENSE-2.0
> #
> # Unless required by applicable law or agreed to in writing, software
> # distributed under the License is distributed on an "AS IS" BASIS,
> # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> # See the License for the specific language governing permissions and
> # limitations under the License.
> # ------------------------------------------------------------------------
> #
> # This script controls standalone Apache ActiveMQ service processes.
> # To ensure compatibility to macosx and cygwin we do not utilize
> # lsb standard infrastructure for controlling daemons like
> # "start-stop-daemon".
> #
> # See also
> http://activemq.apache.org/activemq-command-line-tools-reference.html
> # for additional commandline arguments
> #
> # Authors:
> # Marc Schoechlin <ms@256bit.org>
>
> # ------------------------------------------------------------------------
> # CONFIGURATION
> ACTIVEMQ_CONFIGS="/etc/default/activemq.conf $HOME/.activemqrc"
>
> # For using instances
> if ( basename $0 | grep -q "activemq-instance-" );then
>   INST="$(basename $0|sed 's/^activemq-instance-//;s/\.sh$//')"
>   ACTIVEMQ_CONFIGS="/etc/default/activemq-instance-${INST}.conf
> $HOME/.activemqrc-instance-${INST}"
>   echo "INFO: using alternative activemq configuration files:
> $ACCTIVEMQ_CONFIGS"
> fi
>
> ## START:DEFAULTCONFIG
> # ------------------------------------------------------------------------
> # Configuration file for running Apache Active MQ as standalone provider
> #
> # This file overwrites the predefined settings of the sysv init-script
> #
> # Active MQ installation dir
> ACTIVEMQ_HOME="/opt/activemq"
>
> # Active MQ configuration directory
> ACTIVEMQ_CONFIG_DIR="$ACTIVEMQ_HOME/conf"
>
> # Active MQ configuration directory
> ACTIVEMQ_DATA_DIR="$ACTIVEMQ_HOME/data"
>
> # Location of the pidfile
> ACTIVEMQ_PIDFILE="$ACTIVEMQ_DATA_DIR/activemq.pid"
>
> # Location of the java installation
> # Specify the location of your java installation using JAVA_HOME, or
> specify the
> # path to the "java" binary using JAVACMD
> # (set JAVACMD to "auto" for automatic detection)
> #JAVA_HOME=""
> JAVACMD="auto"
>
> # Configure a user with non root priviledges, if no user is specified do
> not change user
> ACTIVEMQ_USER=""
>
> # Set jvm memory configuration
> ACTIVEMQ_OPTS_MEMORY="-Xms256M -Xmx256M"
>
> # Set jvm jmx configuration
> # This enables jmx access over a configured jmx-tcp-port.
> # You have to configure the first four settings if you run a ibm jvm,
> caused by the
> # fact that IBM's jvm does not support VirtualMachine.attach(PID).
> # JMX access is needed for quering a running activemq instance to gain data
> or to
> # trigger management operations.
> #
> # Example for ${ACTIVEMQ_CONFIG_DIR}/jmx.access:
> # ---
> # # The "monitorRole" role has readonly access.
> # # The "controlRole" role has readwrite access.
> # monitorRole readonly
> # controlRole readwrite
> # ---
> #
> # Example for ${ACTIVEMQ_CONFIG_DIR}/jmx.password:
> # ---
> # # The "monitorRole" role has password "abc123".
> # # # The "controlRole" role has password "abcd1234".
> # monitorRole abc123
> # controlRole abcd1234
> # ---
> #
> # ACTIVEMQ_SUNJMX_START="-Dcom.sun.management.jmxremote.port=11099 "
> # ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START
> -Dcom.sun.management.jmxremote.password.file=${ACTIVEMQ_CONFIG_DIR}/jmx.password"
> # ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START
> -Dcom.sun.management.jmxremote.access.file=${ACTIVEMQ_CONFIG_DIR}/jmx.access"
> # ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START
> -Dcom.sun.management.jmxremote.ssl=false"
> ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START
> -Dcom.sun.management.jmxremote"
>
> # Set jvm jmx configuration for controlling the broker process
> # You only have to configure the first four settings if you run a ibm jvm,
> caused by the
> # fact that IBM's jvm does not support VirtualMachine.attach(PID)
> # (see also com.sun.management.jmxremote.port, .jmx.password.file and
> .jmx.access.file )
> #ACTIVEMQ_SUNJMX_CONTROL="--jmxurl service:jmx:rmi:///jndi/rmi://
> 127.0.0.1:11099/jmxrmi --jmxuser controlRole --jmxpassword abcd1234"
> ACTIVEMQ_SUNJMX_CONTROL=""
>
> # Specify the queue manager URL for using "browse" option of sysv
> initscript
> ACTIVEMQ_QUEUEMANAGERURL="--amqurl tcp://localhost:61616"
>
> # Set additional JSE arguments
> ACTIVEMQ_SSL_OPTS=""
>
> # Uncomment to enable YourKit profiling
> #ACTIVEMQ_DEBUG_OPTS="-agentlib:yjpagent"
>
> # Uncomment to enable remote debugging
> #ACTIVEMQ_DEBUG_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE
> -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
>
> # ActiveMQ tries to shutdown the broker by jmx,
> # after a specified number of seconds send SIGKILL
> ACTIVEMQ_KILL_MAXSECONDS="300"
>
> ## END:DEFAULTCONFIG
>
> # ------------------------------------------------------------------------
> # LOAD CONFIGURATION
>
> # load activemq configuration
> CONFIG_LOAD="no"
> for ACTIVEMQ_CONFIG in $ACTIVEMQ_CONFIGS;
> do
>   if [ -f "$ACTIVEMQ_CONFIG" ] ; then
>     ( . $ACTIVEMQ_CONFIG >/dev/null 2>&1 )
>     if [ "$?" != "0" ];then
>      echo "ERROR: there are syntax errors in '$ACTIVEMQ_CONFIG'"
>      exit 1
>     else
>       echo "INFO: loading '$ACTIVEMQ_CONFIG'"
>       . $ACTIVEMQ_CONFIG
>      CONFIG_LOAD="yes"
>     fi
>   fi
> done
>
> # inform user thagt no configuration was loaded
> if [ "$CONFIG_LOAD" != "yes" ];then
>   if [ "$1" != "setup" ];then
>      echo "INFO: using default configuration";
>      echo "(you can configure options in one of these file:
> $ACTIVEMQ_CONFIGS)"
>      echo
>      echo "INFO: invoke the following command to create a configuration
> file"
>      echo "$0 setup [ $(echo $ACTIVEMQ_CONFIGS|sed 's/[ ][ ]*/ | /') ]"
>      echo
>   fi
> fi
>
> # create configuration if requested
> if [ "$1" = "setup" ];then
>   if [ -z "$2" ];then
>      echo "ERROR: specify configuration file"
>      exit 1
>   fi
>   echo "INFO: creating configuration file: $2"
>   (
>   P_STATE="0"
>   while read LINE ;do
>      if (echo "$LINE" | grep "START:DEFAULTCONFIG" >/dev/null );then
>         P_STATE="1"
>         continue;
>      fi
>      if (echo "$LINE" | grep "END:DEFAULTCONFIG" >/dev/null);then
>         P_STATE="0"
>         break;
>      fi
>      if [ "$P_STATE" -eq "1" ];then
>         echo $LINE
>      fi
>   done < $0
>   ) > $2
>   echo "INFO: it's recommend to limit access to '$2' to the priviledged
> user"
>   echo "INFO: (recommended: chown `whoami`:nogroup '$2'; chmod 600 '$2')"
>   exit $?
> fi
>
> # ------------------------------------------------------------------------
> # OS SPECIFIC SUPPORT
>
> OSTYPE="unknown"
>
> case "`uname`" in
>  CYGWIN*) OSTYPE="cygwin" ;;
>  Darwin*)
>           OSTYPE="darwin"
>           if [ "$JAVACMD" = "auto" ];then
>             JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
>           fi
>           ;;
> esac
>
> # For Cygwin, ensure paths are in UNIX format before anything is touched
> if [ "$OSTYPE" = "cygwin" ]; then
>  [ -n "$ACTIVEMQ_HOME" ] &&
>    ACTIVEMQ_HOME="`cygpath --unix "$ACTIVEMQ_HOME"`"
>  [ -n "$JAVA_HOME" ] &&
>    JAVA_HOME="`cygpath --unix "$JAVA_HOME"`"
>  [ -n "$CLASSPATH" ] &&
>    CLASSPATH="`cygpath --path --unix "$CLASSPATH"`"
> fi
>
> # Detect the location of the java binary
> if [ -z "$JAVACMD" ] ; then
>  if [ -n "$JAVA_HOME"  ] ; then
>    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
>      # IBM's JDK on AIX uses strange locations for the executables
>      JAVACMD="$JAVA_HOME/jre/sh/java"
>    else
>      JAVACMD="$JAVA_HOME/bin/java"
>    fi
>  fi
> fi
>
> # Hm, we still do not know the location of the java binary
> if [ ! -x "$JAVACMD" ] ; then
>    JAVACMD=`which java 2> /dev/null `
>    if [ -z "$JAVACMD" ] ; then
>        JAVACMD=java
>    fi
> fi
> # Stopt here if no java installation is defined/found
> if [ ! -x "$JAVACMD" ] ; then
>  echo "ERROR: configuration varaiable JAVA_HOME or JAVACMD is not defined
> correctly."
>  echo "       (JAVA_HOME='$JAVAHOME', JAVACMD='$JAVACMD')"
>  exit 1
> fi
>
> echo "INFO: useing java '$JAVACMD'"
>
> if [ -z "$ACTIVEMQ_BASE" ] ; then
>  ACTIVEMQ_BASE="$ACTIVEMQ_HOME"
> fi
>
> # For Cygwin, switch paths to Windows format before running java if [
> "$OSTYPE" = "cygwin" ]; then
> if [ "$OSTYPE" = "cygwin" ];then
>  ACTIVEMQ_HOME=`cygpath --windows "$ACTIVEMQ_HOME"`
>  ACTIVEMQ_BASE=`cygpath --windows "$ACTIVEMQ_BASE"`
>  ACTIVEMQ_CLASSPATH=`cygpath --path --windows "$ACTIVEMQ_CLASSPATH"`
>  JAVA_HOME=`cygpath --windows "$JAVA_HOME"`
>  CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
>  CYGHOME=`cygpath --windows "$HOME"`
>  if [ -n "$CYGHOME" ]; then
>      ACTIVEMQ_CYGWIN="-Dcygwin.user.home=\"$CYGHOME\""
>  fi
> fi
>
> # Set default classpath
> ACTIVEMQ_CLASSPATH="${ACTIVEMQ_CONFIG_DIR}/;${ACTIVEMQ_CLASSPATH}"
>
> # Backup invocation parameters
> COMMANDLINE_ARGS="$@"
>
> # ------------------------------------------------------------------------
> # HELPER FUNCTIONS
>
> # Start the ActiveMQ JAR
> #
> # This function uses a lot of globally defined variables
> invokeJar(){
>   local PIDFILE="$1"
>   local RET="1"
>   local CUSER="$(whoami)"
>
>   if ( ! [ -f "${ACTIVEMQ_HOME}/bin/run.jar" ] );then
>    echo "ERROR: '${ACTIVEMQ_HOME}/bin/run.jar' does not exist"
>    exit 1
>   fi
>
>   if ( [ -z "$ACTIVEMQ_USER" ] || [ "$ACTIVEMQ_USER" = "$CUSER" ] );then
>      DOIT_PREFIX="sh -c "
>      DOIT_POSTFIX=";"
>   elif [ "$(id -u)" = "0" ];then
>      DOIT_PREFIX="su -c "
>      DOIT_POSTFIX=" - $ACTIVEMQ_USER"
>      echo "INFO: changing to user '$ACTIVEMQ_USER' to invoke java"
>   fi
>   # Execute java binary
>   if [ -n "$PIDFILE" ];then
>      $DOIT_PREFIX "cd $ACTIVEMQ_CONFIG_DIR; $JAVACMD $ACTIVEMQ_OPTS
> $ACTIVEMQ_DEBUG_OPTS \
>              -Dactivemq.classpath=\"${ACTIVEMQ_CLASSPATH}\" \
>              -Dactivemq.home=\"${ACTIVEMQ_HOME}\" \
>              -Dactivemq.base=\"${ACTIVEMQ_BASE}\" \
>              $ACTIVEMQ_CYGWIN \
>              -jar \"${ACTIVEMQ_HOME}/bin/run.jar\" $COMMANDLINE_ARGS
> >/dev/null 2>&1 &
>              RET=\"\$?\"; APID=\"\$!\";
>              echo \$APID > $PIDFILE;
>              echo \"INFO: pidfile created : '$PIDFILE' (pid
> '\$APID')\";exit \$RET" $DOIT_POSTFIX
>      RET="$?"
>     else
>      $DOIT_PREFIX "cd $ACTIVEMQ_CONFIG_DIR; $JAVACMD $ACTIVEMQ_OPTS
> $ACTIVEMQ_DEBUG_OPTS \
>              -Dactivemq.classpath=\"${ACTIVEMQ_CLASSPATH}\" \
>              -Dactivemq.home=\"${ACTIVEMQ_HOME}\" \
>              -Dactivemq.base=\"${ACTIVEMQ_BASE}\" \
>              $ACTIVEMQ_CYGWIN \
>              -jar \"${ACTIVEMQ_HOME}/bin/run.jar\" $COMMANDLINE_ARGS"
> $DOIT_POSTFIX
>      RET="$?"
>   fi
>   return $RET
> }
>
> checkRunning(){
>    if [ -f "$ACTIVEMQ_PIDFILE" ]; then
>       if  [ -z "$(cat $ACTIVEMQ_PIDFILE)" ];then
>        echo "ERROR: pidfile '$ACTIVEMQ_PIDFILE' exists but contains no pid"
>        return 2
>       fi
>       if (ps -p $(cat $ACTIVEMQ_PIDFILE)|grep java >/dev/null);then
>         return 0;
>       else
>         return 1;
>       fi
>    else
>         return 1;
>    fi
> }
>
> invoke_status(){
>    if ( checkRunning );then
>         echo "Activemq is running (pid '$(cat $ACTIVEMQ_PIDFILE)')"
>         exit 0
>    fi
>    echo "Activemq not running"
>    exit 1
> }
>
> invoke_start(){
>    if ( checkRunning );then
>      echo "INFO: process with pid '$(cat $ACTIVEMQ_PIDFILE)' is already
> running"
>      exit 0
>    fi
>
>    if [ -z "$ACTIVEMQ_OPTS" ] ; then
>        ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS_MEMORY
> -Dorg.apache.activemq.UseDedicatedTaskRunner=true
> -Djava.util.logging.config.file=logging.properties"
>    fi
>    ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS $ACTIVEMQ_SUNJMX_START $ACTIVEMQ_SSL_OPTS"
>    echo "INFO: starting - inspect logfiles specified in logging.properties
> and log4j.properties to get details"
>    invokeJar $ACTIVEMQ_PIDFILE
>    exit "$?"
> }
>
> invoke_fgstart(){
>    if ( checkRunning );then
>      echo "ERROR: activemq is already running"
>      exit 1
>    fi
>    if [ -z "$ACTIVEMQ_OPTS" ] ; then
>        ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS_MEMORY
> -Dorg.apache.activemq.UseDedicatedTaskRunner=true
> -Djava.util.logging.config.file=logging.properties"
>    fi
>    ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS $ACTIVEMQ_SUNJMX_START $ACTIVEMQ_SSL_OPTS"
>
>    COMMANDLINE_ARGS="start $(echo $COMMANDLINE_ARGS|sed 's,^fgstart,,')"
>    echo "INFO: starting in foreeground, this is just for debugging purposes
> (stop process by pressing CTRL+c)"
>    invokeJar
>    exit "$?"
> }
>
>
> invoke_stop(){
>    RET="1"
>    if ( checkRunning );then
>       ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS $ACTIVEMQ_SSL_OPTS"
>       COMMANDLINE_ARGS="$COMMANDLINE_ARGS $ACTIVEMQ_SUNJMX_CONTROL"
>       invokeJar
>       RET="$?"
>       echo -n "INFO: waiting at least $ACTIVEMQ_KILL_MAXSECONDS seconds for
> regular process termination of pid '$(cat $ACTIVEMQ_PIDFILE)' : "
>       FOUND="0"
>       for i in `seq 0 $ACTIVEMQ_KILL_MAXSECONDS` ;do
>         if (checkRunning);then
>            sleep 1
>            echo -n "."
>         else
>            echo " FINISHED"
>            FOUND="1"
>            break
>         fi
>       done
>       if [ "$FOUND" -ne "1" ];then
>         echo "INFO: regular shutdown not successful,  sending SIGKILL to
> process with pid '$(cat $ACTIVEMQ_PIDFILE)'"
>         kill -KILL $(cat $ACTIVEMQ_PIDFILE)
>         RET="1"
>       fi
>    elif [ -f "$ACTIVEMQ_PIDFILE" ];then
>       echo "ERROR: no or outdated process id in '$ACTIVEMQ_PIDFILE'"
>       echo
>       echo "INFO: removing $ACTIVEMQ_PIDFILE"
>    else
>       exit 0
>    fi
>    rm -f $ACTIVEMQ_PIDFILE >/dev/null 2>&1
>    exit $RET
> }
>
> invoke_task(){
>    # call task in java binary
>    if ( checkRunning );then
>      if [ "$1" = "browse" ] && [ -n "$ACTIVEMQ_QUEUEMANAGERURL" ];then
>         ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS $ACTIVEMQ_SSL_OPTS"
>         COMMANDLINE_ARGS="$1 $ACTIVEMQ_QUEUEMANAGERURL $(echo
> $COMMANDLINE_ARGS|sed 's,^browse,,')"
>      elif [ "$1" = "query" ]  && [ -n "$ACTIVEMQ_QUEUEMANAGERURL" ];then
>         ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS $ACTIVEMQ_SSL_OPTS"
>         COMMANDLINE_ARGS="$1 $ACTIVEMQ_SUNJMX_CONTROL $(echo
> $COMMANDLINE_ARGS|sed 's,^query,,')"
>      else
>         ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS $ACTIVEMQ_SSL_OPTS"
>         COMMANDLINE_ARGS="$COMMANDLINE_ARGS $ACTIVEMQ_SUNJMX_CONTROL"
>      fi
>      invokeJar
>      exit $?
>    else
>      echo "INFO: activemq not running"
>      exit 1
>    fi
> }
>
> # ------------------------------------------------------------------------
> # MAIN
>
> # show help
> if [ -z "$1" ];then
>  invokeJar
>  RET="$?"
>  cat << EOF
> Tasks provided by the sysv init script:
>    restart         - stop running instance (is there is one), start new
> instance
>    fgstart         - start daemon in foreground, usful for debugging
> purposes
>    status          - check if activemq process is running
>    setup           - create the specified configuration file for this init
> script
>                      (see next usage section)
>
> Configuration of this script:
>    The configuration of this script can be placed on
> /etc/default/activemq.conf or $HOME/.activemqrc.
>    To use addtional configurations for running multiple instances on the
> same operating system
>    rename or symlink script to a name matching to
> activemq-instance-<INSTANCENAME>.
>    This changes the configuration location to
> /etc/default/activemq-instance-<INSTANCENAME>.conf and
>    \$HOME/.activemqrc-instance-<INSTANCENAME>. Configuration files in /etc
> have higher precedence.
> EOF
>  exit $RET
> fi
>
> case "$1" in
>  status)
>      invoke_status
>    ;;
>  restart)
>    if ( checkRunning );then
>      $0 stop
>    fi
>    $0 status
>    $0 start
>    $0 status
>    ;;
>  start)
>    invoke_start
>    ;;
>  fgstart)
>    invoke_fgstart
>    ;;
>  stop)
>    invoke_stop
>    ;;
>  *)
>    invoke_task
> esac
>
> # vim:ai et ts=2 shiftwidth=2 expandtab tabstop=3:
>
> $ ./activemq start
> INFO: loading '/home/mschoechlin/.activemqrc'
> INFO: useing java '/usr/bin/java'
> INFO: starting - inspect logfiles specified in logging.properties and
> log4j.properties to get details
> INFO: pidfile created :
> '/home/mschoechlin/temp/apache-activemq-data/activemq.pid' (pid '11283')
>
> $ ./activemq restart
> INFO: loading '/home/mschoechlin/.activemqrc'
> INFO: useing java '/usr/bin/java'
> INFO: loading '/home/mschoechlin/.activemqrc'
> INFO: useing java '/usr/bin/java'
> Java Runtime: Sun Microsystems Inc. 1.6.0_16
> /usr/lib/jvm/java-6-sun-1.6.0.16/jre
>  Heap sizes: current=59776k  free=59151k  max=886592k
>    JVM args:
> -Dactivemq.classpath=/home/mschoechlin/temp/apache-activemq-data/conf/;
> -Dactivemq.home=/home/mschoechlin/temp/apache-activemq-5.3.0
> -Dactivemq.base=/home/mschoechlin/temp/apache-activemq-5.3.0
> ACTIVEMQ_HOME: /home/mschoechlin/temp/apache-activemq-5.3.0
> ACTIVEMQ_BASE: /home/mschoechlin/temp/apache-activemq-5.3.0
> Stopping broker: localhost
> INFO: waiting at least 300 seconds for regular process termination of pid
> '11283' :  FINISHED
> INFO: loading '/home/mschoechlin/.activemqrc'
> INFO: useing java '/usr/bin/java'
> Activemq not running
> INFO: loading '/home/mschoechlin/.activemqrc'
> INFO: useing java '/usr/bin/java'
> INFO: starting - inspect logfiles specified in logging.properties and
> log4j.properties to get details
> INFO: pidfile created :
> '/home/mschoechlin/temp/apache-activemq-data/activemq.pid' (pid '11407')
> INFO: loading '/home/mschoechlin/.activemqrc'
> INFO: useing java '/usr/bin/java'
> Activemq is running (pid '11407')
>
> $ ./activemq list
> INFO: loading '/home/mschoechlin/.activemqrc'
> INFO: useing java '/usr/bin/java'
> Java Runtime: Sun Microsystems Inc. 1.6.0_16
> /usr/lib/jvm/java-6-sun-1.6.0.16/jre
>  Heap sizes: current=59776k  free=59151k  max=886592k
>    JVM args:
> -Dactivemq.classpath=/home/mschoechlin/temp/apache-activemq-data/conf/;
> -Dactivemq.home=/home/mschoechlin/temp/apache-activemq-5.3.0
> -Dactivemq.base=/home/mschoechlin/temp/apache-activemq-5.3.0
> ACTIVEMQ_HOME: /home/mschoechlin/temp/apache-activemq-5.3.0
> ACTIVEMQ_BASE: /home/mschoechlin/temp/apache-activemq-5.3.0
> BrokerName = localhost
>
> $ ./activemq query
> INFO: loading '/home/mschoechlin/.activemqrc'
> INFO: useing java '/usr/bin/java'
> Java Runtime: Sun Microsystems Inc. 1.6.0_16
> /usr/lib/jvm/java-6-sun-1.6.0.16/jre
>  Heap sizes: current=59776k  free=59151k  max=886592k
>    JVM args:
> -Dactivemq.classpath=/home/mschoechlin/temp/apache-activemq-data/conf/;
> -Dactivemq.home=/home/mschoechlin/temp/apache-activemq-5.3.0
> -Dactivemq.base=/home/mschoechlin/temp/apache-activemq-5.3.0
> ACTIVEMQ_HOME: /home/mschoechlin/temp/apache-activemq-5.3.0
> ACTIVEMQ_BASE: /home/mschoechlin/temp/apache-activemq-5.3.0
> DequeueCount = 0
> Name = ddddddddd
> MinEnqueueTime = 0
> CursorMemoryUsage = 0
> MaxAuditDepth = 2048
> Destination = ddddddddd
> AverageEnqueueTime = 0.0
> InFlightCount = 0
> MemoryLimit = 1048576
> Type = Queue
> EnqueueCount = 0
> MaxEnqueueTime = 0
> MemoryUsagePortion = 0.0
> ProducerCount = 0
> UseCache = true
> MaxProducersToAudit = 32
> CursorFull = false
> BrokerName = localhost
> ConsumerCount = 0
> ProducerFlowControl = true
> Subscriptions = []
> QueueSize = 0
> MaxPageSize = 200
> CursorPercentUsage = 0
> MemoryPercentUsage = 0
> DispatchCount = 0
> ExpiredCount = 0
> ...
> ...
>
> $ ./activemq fgstart
> INFO: loading '/home/mschoechlin/.activemqrc'
> INFO: useing java '/usr/bin/java'
> ERROR: activemq is already running
>
> $ ./activemq stop
> INFO: loading '/home/mschoechlin/.activemqrc'
> INFO: useing java '/usr/bin/java'
> Java Runtime: Sun Microsystems Inc. 1.6.0_16
> /usr/lib/jvm/java-6-sun-1.6.0.16/jre
>  Heap sizes: current=59776k  free=59151k  max=886592k
>    JVM args:
> -Dactivemq.classpath=/home/mschoechlin/temp/apache-activemq-data/conf/;
> -Dactivemq.home=/home/mschoechlin/temp/apache-activemq-5.3.0
> -Dactivemq.base=/home/mschoechlin/temp/apache-activemq-5.3.0
> ACTIVEMQ_HOME: /home/mschoechlin/temp/apache-activemq-5.3.0
> ACTIVEMQ_BASE: /home/mschoechlin/temp/apache-activemq-5.3.0
> Stopping broker: localhost
> INFO: waiting at least 300 seconds for regular process termination of pid
> '11407' :  FINISHED
>
> $ ./activemq fgstart
> INFO: loading '/home/mschoechlin/.activemqrc'
> INFO: useing java '/usr/bin/java'
> INFO: starting in foreeground, this is just for debugging purposes (stop
> process by pressing CTRL+c)
> Java Runtime: Sun Microsystems Inc. 1.6.0_16
> /usr/lib/jvm/java-6-sun-1.6.0.16/jre
>  Heap sizes: current=251264k  free=247327k  max=251264k
>    JVM args: -Xms256M -Xmx256M
> -Dorg.apache.activemq.UseDedicatedTaskRunner=true
> -Djava.util.logging.config.file=logging.properties
> -Dcom.sun.management.jmxremote.port=11099
> -Dcom.sun.management.jmxremote.password.file=/home/mschoechlin/temp/apache-activemq-data/conf/jmx.password
> -Dcom.sun.management.jmxremote.access.file=/home/mschoechlin/temp/apache-activemq-data/conf/jmx.access
> -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote
> -Dactivemq.classpath=/home/mschoechlin/temp/apache-activemq-data/conf/;
> -Dactivemq.home=/home/mschoechlin/temp/apache-activemq-5.3.0
> -Dactivemq.base=/home/mschoechlin/temp/apache-activemq-5.3.0
> ACTIVEMQ_HOME: /home/mschoechlin/temp/apache-activemq-5.3.0
> ACTIVEMQ_BASE: /home/mschoechlin/temp/apache-activemq-5.3.0
> Loading message broker from: xbean:activemq.xml
>  INFO | Using Persistence Adapter:
> org.apache.activemq.store.kahadb.KahaDBPersistenceAdapter@1cb1a4e2
>  INFO | Replayed 1 operations from the journal in 0.019 seconds.
>  INFO | ActiveMQ 5.3.0 JMS Message Broker (localhost) is starting
>  INFO | For help or more information please see:
> http://activemq.apache.org/
>  INFO | Listening for connections at: tcp://lt-msch:61616
>  INFO | Connector openwire Started
>  INFO | ActiveMQ JMS Message Broker (localhost,
> ID:lt-msch-37931-1257840732525-0:0) started
>  INFO | Logging to org.slf4j.impl.JCLLoggerAdapter(org.mortbay.log) via
> org.mortbay.log.Slf4jLog
>  INFO | jetty-6.1.9
>  INFO | ActiveMQ WebConsole initialized.
>  INFO | Initializing Spring FrameworkServlet 'dispatcher'
>  INFO | ActiveMQ Console at http://0.0.0.0:8161/admin
>  INFO | Initializing Spring root WebApplicationContext
>  INFO | Connector vm://localhost Started
>  INFO | Camel Console at http://0.0.0.0:8161/camel
>  INFO | ActiveMQ Web Demos at http://0.0.0.0:8161/demo
>  INFO | RESTful file access application at http://0.0.0.0:8161/fileserver
>  INFO | Started SelectChannelConnector@0.0.0.0:8161
> ^C INFO | ActiveMQ Message Broker (localhost,
> ID:lt-msch-37931-1257840732525-0:0) is shutting down
>  INFO | Connector openwire Stopped
>  INFO | Connector vm://localhost Stopped
>  INFO | ActiveMQ JMS Message Broker (localhost,
> ID:lt-msch-37931-1257840732525-0:0) stopped
>
> $ ./activemq setup /tmp/test.config
> INFO: loading '/home/mschoechlin/.activemqrc'
> INFO: creating configuration file: /tmp/test.config
> INFO: it's recommend to limit access to '/tmp/test.config' to the
> priviledged user
> INFO: (recommended: chown mschoechlin:nogroup '/tmp/test.config'; chmod 600
> '/tmp/test.config')
>
> $ cat /tmp/test.config
> # ------------------------------------------------------------------------
> # Configuration file for running Apache Active MQ as standalone provider
> #
> # This file overwrites the predefined settings of the sysv init-script
> #
> # Active MQ installation dir
> ACTIVEMQ_HOME="/opt/activemq"
>
> # Active MQ configuration directory
> ACTIVEMQ_CONFIG_DIR="$ACTIVEMQ_HOME/conf"
>
> # Active MQ configuration directory
> ACTIVEMQ_DATA_DIR="$ACTIVEMQ_HOME/data"
>
> # Location of the pidfile
> ACTIVEMQ_PIDFILE="$ACTIVEMQ_DATA_DIR/activemq.pid"
>
> # Location of the java installation
> # Specify the location of your java installation using JAVA_HOME, or
> specify the
> # path to the "java" binary using JAVACMD
> # (set JAVACMD to "auto" for automatic detection)
> #JAVA_HOME=""
> JAVACMD="auto"
>
> # Configure a user with non root priviledges, if no user is specified do
> not change user
> ACTIVEMQ_USER=""
>
> # Set jvm memory configuration
> ACTIVEMQ_OPTS_MEMORY="-Xms256M -Xmx256M"
>
> # Set jvm jmx configuration
> # This enables jmx access over a configured jmx-tcp-port.
> # You have to configure the first four settings if you run a ibm jvm,
> caused by the
> # fact that IBM's jvm does not support VirtualMachine.attach(PID).
> # JMX access is needed for quering a running activemq instance to gain data
> or to
> # trigger management operations.
> #
> # Example for ${ACTIVEMQ_CONFIG_DIR}/jmx.access:
> # ---
> # # The "monitorRole" role has readonly access.
> # # The "controlRole" role has readwrite access.
> # monitorRole readonly
> # controlRole readwrite
> # ---
> #
> # Example for ${ACTIVEMQ_CONFIG_DIR}/jmx.password:
> # ---
> # # The "monitorRole" role has password "abc123".
> # # # The "controlRole" role has password "abcd1234".
> # monitorRole abc123
> # controlRole abcd1234
> # ---
> #
> # ACTIVEMQ_SUNJMX_START="-Dcom.sun.management.jmxremote.port=11099 "
> # ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START
> -Dcom.sun.management.jmxremote.password.file=${ACTIVEMQ_CONFIG_DIR}/jmx.password"
> # ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START
> -Dcom.sun.management.jmxremote.access.file=${ACTIVEMQ_CONFIG_DIR}/jmx.access"
> # ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START
> -Dcom.sun.management.jmxremote.ssl=false"
> ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START
> -Dcom.sun.management.jmxremote"
>
> # Set jvm jmx configuration for controlling the broker process
> # You only have to configure the first four settings if you run a ibm jvm,
> caused by the
> # fact that IBM's jvm does not support VirtualMachine.attach(PID)
> # (see also com.sun.management.jmxremote.port, .jmx.password.file and
> .jmx.access.file )
> #ACTIVEMQ_SUNJMX_CONTROL="--jmxurl service:jmx:rmi:///jndi/rmi://
> 127.0.0.1:11099/jmxrmi --jmxuser controlRole --jmxpassword abcd1234"
> ACTIVEMQ_SUNJMX_CONTROL=""
>
> # Specify the queue manager URL for using "browse" option of sysv
> initscript
> ACTIVEMQ_QUEUEMANAGERURL="--amqurl tcp://localhost:61616"
>
> # Set additional JSE arguments
> ACTIVEMQ_SSL_OPTS=""
>
> # Uncomment to enable YourKit profiling
> #ACTIVEMQ_DEBUG_OPTS="-agentlib:yjpagent"
>
> # Uncomment to enable remote debugging
> #ACTIVEMQ_DEBUG_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE
> -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
>
> # ActiveMQ tries to shutdown the broker by jmx,
> # after a specified number of seconds send SIGKILL
> ACTIVEMQ_KILL_MAXSECONDS="300"
>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message