Apache ActiveMQ
This is an Apache ActiveMQ getting started tutorial.
Apache ActiveMQ is the most popular and powerful open source messaging and Integration Patterns server.
Before we start we will need Java and ActiveMQ installed.
Java SE 1.6 or higher is required. Click here to download.
Once you have Java SE installed you can check if it is setup correctly by opening Terminal and typing the following command.
$ java -version
You will see the following output
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
The output will vary based on the version installed. Important point to note is that Java SE is installed and its version is 1.8 in the above case.
Download and install ActiveMQ from Apache ActiveMQ website. Click here to download. Get the stable release.
For Unix/Linux/Cygwin Distribution download apache-activemq-5.14.3-bin.tar.gz or latest version. After downloading extract the file.
Sample path
/Users/yusufshakeel/Documents/apache-activemq-5.14.3
Apache Ant is a Java library and command-line tool that help building software.
Apache Ant is required if you want to build and test the examples that comes with ActiveMQ. Click here to download.
Apache Ant v1.9.x requires Java5 at runtime. While v1.10.x requires Java8 at runtime.
For Unix/Linux/Mac Distribution download apache-ant-1.10.1-bin.tar.bz2 or latest version. After downloading extract the file.
Sample path
/Users/yusufshakeel/Documents/apache-ant-1.10.1
Lastly, make sure to set up and put the $ANT_HOME environment variable in the $PATH environment variable.
Open terminal and type the following command
$ cd
Now using vi
command open .bash_profile
$ vi .bash_profile
Now, inside the file add the following lines. Press I key to get into INSERT mode.
#Apache Ant
export ANT_HOME=/Users/yusufshakeel/Documents/apache-ant-1.10.1
#Export to PATH
export PATH=$ANT_HOME/bin:$PATH
PATH may contain some other values. Be careful when making changes.
Once done press ESC key and type :wq and hit Enter
Now, check if Ant was properly installed by typing the following command in the terminal.
$ ant -version
Apache Ant(TM) version 1.10.1 compiled on February 2 2017
Ant version may version depending on what you have downloaded.
Important files/directories
activemq-all-5.14.3.jar
This jar file contains all of ActiveMQ.
bin
This directory contains all the binary/executable files.
conf
This directory contains the configuration related files for ActiveMQ.
data
This directory is for storing log files and message data.
example
This directory contains some ActiveMQ examples.
lib
This directory contains all the libraries needed by ActiveMQ.
Move inside the ActiveMQ directory and type the following command.
$ cd /Users/yusufshakeel/Documents/apache-activemq-5.14.3
$ ./bin/activemq console
Output
INFO: Loading '/Users/yusufshakeel/Documents/apache-activemq-5.14.3//bin/env'
INFO: Using java '/usr/bin/java'
INFO: Starting in foreground, this is just for debugging purposes (stop process by pressing CTRL+C)
INFO: Creating pidfile /Users/yusufshakeel/Documents/apache-activemq-5.14.3//data/activemq.pid
Java Runtime: Oracle Corporation 1.8.0_102 /Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre
Heap sizes: current=62976k free=60026k max=932352k
JVM args: -Xms64M -Xmx1G -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=/Users/yusufshakeel/Documents/apache-activemq-5.14.3//conf/login.config -Dcom.sun.management.jmxremote -Djava.awt.headless=true -Djava.io.tmpdir=/Users/yusufshakeel/Documents/apache-activemq-5.14.3//tmp -Dactivemq.classpath=/Users/yusufshakeel/Documents/apache-activemq-5.14.3//conf:/Users/yusufshakeel/Documents/apache-activemq-5.14.3//../lib/: -Dactivemq.home=/Users/yusufshakeel/Documents/apache-activemq-5.14.3/ -Dactivemq.base=/Users/yusufshakeel/Documents/apache-activemq-5.14.3/ -Dactivemq.conf=/Users/yusufshakeel/Documents/apache-activemq-5.14.3//conf -Dactivemq.data=/Users/yusufshakeel/Documents/apache-activemq-5.14.3//data
Extensions classpath:
[/Users/yusufshakeel/Documents/apache-activemq-5.14.3/lib,/Users/yusufshakeel/Documents/apache-activemq-5.14.3/lib/camel,/Users/yusufshakeel/Documents/apache-activemq-5.14.3/lib/optional,/Users/yusufshakeel/Documents/apache-activemq-5.14.3/lib/web,/Users/yusufshakeel/Documents/apache-activemq-5.14.3/lib/extra]
ACTIVEMQ_HOME: /Users/yusufshakeel/Documents/apache-activemq-5.14.3
ACTIVEMQ_BASE: /Users/yusufshakeel/Documents/apache-activemq-5.14.3
ACTIVEMQ_CONF: /Users/yusufshakeel/Documents/apache-activemq-5.14.3/conf
ACTIVEMQ_DATA: /Users/yusufshakeel/Documents/apache-activemq-5.14.3/data
Loading message broker from: xbean:activemq.xml
INFO | Refreshing org.apache.activemq.xbean.XBeanBrokerFactory$1@28feb3fa: startup date [Tue Feb 14 19:46:22 IST 2017]; root of context hierarchy
INFO | Using Persistence Adapter: KahaDBPersistenceAdapter[/Users/yusufshakeel/Documents/apache-activemq-5.14.3/data/kahadb]
INFO | PListStore:[/Users/yusufshakeel/Documents/apache-activemq-5.14.3/data/localhost/tmp_storage] started
INFO | Apache ActiveMQ 5.14.3 (localhost, ID:YUSUF-MacBook-Pro.local-58262-1487081799213-0:1) is starting
INFO | Listening for connections at: tcp://YUSUF-MacBook-Pro.local:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600
INFO | Connector openwire started
INFO | Listening for connections at: amqp://YUSUF-MacBook-Pro.local:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600
INFO | Connector amqp started
INFO | Listening for connections at: stomp://YUSUF-MacBook-Pro.local:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600
INFO | Connector stomp started
INFO | Listening for connections at: mqtt://YUSUF-MacBook-Pro.local:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600
INFO | Connector mqtt started
WARN | ServletContext@o.e.j.s.ServletContextHandler@3e6f3f28{/,null,STARTING} has uncovered http methods for path: /
INFO | Listening for connections at ws://YUSUF-MacBook-Pro.local:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600
INFO | Connector ws started
INFO | Apache ActiveMQ 5.14.3 (localhost, ID:YUSUF-MacBook-Pro.local-58262-1487081799213-0:1) started
INFO | For help or more information please see: http://activemq.apache.org
INFO | No Spring WebApplicationInitializer types detected on classpath
INFO | ActiveMQ WebConsole available at http://0.0.0.0:8161/
INFO | ActiveMQ Jolokia REST API available at http://0.0.0.0:8161/api/jolokia/
INFO | Initializing Spring FrameworkServlet 'dispatcher'
INFO | No Spring WebApplicationInitializer types detected on classpath
INFO | jolokia-agent: Using policy access restrictor classpath:/jolokia-access.xml
To check ActiveMQ status we use the following command.
$ ./bin/activemq status
INFO: Loading '/Users/yusufshakeel/Documents/apache-activemq-5.14.3//bin/env'
INFO: Using java '/usr/bin/java'
ActiveMQ is running (pid '17572')
To stop we use stop
or Ctrl+C.
$ ./bin/activemq stop
INFO: Loading '/Users/yusufshakeel/Documents/apache-activemq-5.14.3//bin/env'
INFO: Using java '/usr/bin/java'
INFO: Waiting at least 30 seconds for regular process termination of pid '17572' :
Java Runtime: Oracle Corporation 1.8.0_102 /Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre
Heap sizes: current=62976k free=61992k max=932352k
JVM args: -Xms64M -Xmx1G -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=/Users/yusufshakeel/Documents/apache-activemq-5.14.3//conf/login.config -Dactivemq.classpath=/Users/yusufshakeel/Documents/apache-activemq-5.14.3//conf:/Users/yusufshakeel/Documents/apache-activemq-5.14.3//../lib/: -Dactivemq.home=/Users/yusufshakeel/Documents/apache-activemq-5.14.3/ -Dactivemq.base=/Users/yusufshakeel/Documents/apache-activemq-5.14.3/ -Dactivemq.conf=/Users/yusufshakeel/Documents/apache-activemq-5.14.3//conf -Dactivemq.data=/Users/yusufshakeel/Documents/apache-activemq-5.14.3//data
Extensions classpath:
[/Users/yusufshakeel/Documents/apache-activemq-5.14.3/lib,/Users/yusufshakeel/Documents/apache-activemq-5.14.3/lib/camel,/Users/yusufshakeel/Documents/apache-activemq-5.14.3/lib/optional,/Users/yusufshakeel/Documents/apache-activemq-5.14.3/lib/web,/Users/yusufshakeel/Documents/apache-activemq-5.14.3/lib/extra]
ACTIVEMQ_HOME: /Users/yusufshakeel/Documents/apache-activemq-5.14.3
ACTIVEMQ_BASE: /Users/yusufshakeel/Documents/apache-activemq-5.14.3
ACTIVEMQ_CONF: /Users/yusufshakeel/Documents/apache-activemq-5.14.3/conf
ACTIVEMQ_DATA: /Users/yusufshakeel/Documents/apache-activemq-5.14.3/data
Connecting to pid: 17572
.....Stopping broker: localhost
.. TERMINATED
Once the ActiveMQ starts we can access it via web.
On your localhost simply type the following URL in the web browser.
http://localhost:8161/admin
On server type your domain name followed by :8161/admin
.
http://www.example.com:8161/admin
When asked for username and password type admin for both the fields. If successful then the following page will open.
The default username and password for ActiveMQ web console is admin/admin. To change this perform the following steps.
Open the jetty.xml file which is inside the conf directory.
Find the following line.
<!-- set authenticate=false to disable login -->
<property name="authenticate" value="true" />
To turn on login set the value to true
. To disable login set it to false
.
Open jetty-realm.properties file inside the conf directory.
Change/add username and password in the following format username: password [,rolename ...]
.
Lets say we want to change the username/password to adminuser/root1234 then, we make the following changes.
# is for comment.
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# Defines users that can access the web (console, demo, etc.)
# username: password [,rolename ...]
#admin: admin, admin
#user: user, user
adminuser: root1234, admin
Now we can login using the new username/password.
ADVERTISEMENT