On an enterprise server, many important applications are likely to cohabit. The need for a broker makes more sense if these applications are constantly transferring information. In addition, an organization’s scalable infrastructure depends on the quality of the applications. Therefore, in this post, I will show you how to install Apache ActiveMQ on Ubuntu 20.04 / 18.04.
In computing, the term broker defines an intermediary between two or more applications that need resources and information between them. So, Apache ActiveMQ is the most popular and powerful open source messaging and Integration Patterns server. It is open source licensed under the Apache 2.0 License.
Besides being able to be used in Java, ActiveMQ can also be used in .NET, C/C++ or Delphi or from script languages such as Perl, Python, PHP, and Ruby through various “cross-language clients”.
So, let us start.
1. Install Java
If you use Ubuntu 20.04 / 18.04 it is unlikely that you do not have Java installed, however, you can do it in an easy way with the following command:
:~$ sudo apt install openjdk-11-jre Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: at-spi2-core ca-certificates-java fontconfig-config fonts-dejavu-core fonts-dejavu-extra java-common libatk-bridge2.0-0 libatk-wrapper-java libatk-wrapper-java-jni libatk1.0-0 libatk1.0-data libatspi2.0-0 libavahi-client3 libavahi-common-data libavahi-common3 libcups2 libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libfontconfig1 libfontenc1 libgif7 libgl1 libgl1-mesa-dri libglapi-mesa libglvnd0 libglx-mesa0 libglx0 libice6 libjpeg-turbo8 libjpeg8 liblcms2-2 libllvm10 libnspr4 libnss3 libpciaccess0 libpcsclite1 libsensors-config libsensors5 libsm6 libvulkan1 libwayland-client0 libx11-xcb1 libxaw7 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-shape0 libxcb-sync1 libxcomposite1 libxdamage1 libxfixes3 libxft2 libxi6 libxinerama1 libxkbfile1 libxmu6 libxpm4 libxrandr2 libxrender1 libxshmfence1 libxt6 libxtst6 libxv1 libxxf86dga1 libxxf86vm1 mesa-vulkan-drivers openjdk-11-jre-headless x11-common x11-utils Suggested packages: default-jre cups-common liblcms2-utils pcscd lm-sensors libnss-mdns fonts-ipafont-gothic fonts-ipafont-mincho fonts-wqy-microhei | fonts-wqy-zenhei fonts-indic mesa-utils The following NEW packages will be installed: at-spi2-core ca-certificates-java fontconfig-config fonts-dejavu-core fonts-dejavu-extra java-common libatk-bridge2.0-0 libatk-wrapper-java libatk-wrapper-java-jni libatk1.0-0 libatk1.0-data libatspi2.0-0 libavahi-client3 libavahi-common-data libavahi-common3 libcups2 libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libfontconfig1 libfontenc1 libgif7 libgl1 libgl1-mesa-dri libglapi-mesa libglvnd0 libglx-mesa0 libglx0 libice6 libjpeg-turbo8 libjpeg8 liblcms2-2 libllvm10 libnspr4 libnss3 libpciaccess0 libpcsclite1 libsensors-config libsensors5 libsm6 libvulkan1 libwayland-client0 libx11-xcb1 libxaw7 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-shape0 libxcb-sync1 libxcomposite1 libxdamage1 libxfixes3 libxft2 libxi6 libxinerama1 libxkbfile1 libxmu6 libxpm4 libxrandr2 libxrender1 libxshmfence1 libxt6 libxtst6 libxv1 libxxf86dga1 libxxf86vm1 mesa-vulkan-drivers openjdk-11-jre openjdk-11-jre-headless x11-common x11-utils 0 upgraded, 74 newly installed, 0 to remove and 83 not upgraded. Need to get 72.6 MB of archives.
Next, check the java version to ensure that everything is Ok.
:~$ java -version openjdk version "11.0.8" 2020-07-14 OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04) OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)
This first step is vital because Apache ActiveMQ requires Java to work. That’s why we had to install it.
2. Install Apache ActiveMQ
Now we can continue with the installation. The best way to install Apache ActiveMQ is through your binaries that we can get from your website. With this, you guarantee that you will have the latest stable version available.
First, download the file.
:~$ cd /opt/ :~$ sudo wget -c http://mirrors.advancedhosters.com/apache/activemq/5.16.0/apache-activemq-5.16.0-bin.tar.gz
Decompress it.
:~$ sudo tar xzvf apache-activemq-5.16.0-bin.tar.gz
Then, create a symbolic link to make easier the access.
:~$ sudo ln -s apache-activemq-5.16.0 activemq
Then, create a new user for ActiveMQ. Assign permissions to the folder and then log in as that new user.
$ sudo useradd activemq $ sudo chown -RH activemq: /opt/activemq
3. Configure Apache ActiveMQ
First of all, it is necessary to create a systemd service in order to access the program even more easily. To do this, run:
:~$ sudo nano /etc/systemd/system/activemq.service
And add the following:
[Unit] Description=Apache ActiveMQ After=network.target [Service] Type=forking User=activemq Group=activemq ExecStart=/opt/activemq/bin/activemq start ExecStop=/opt/activemq/bin/activemq stop [Install] WantedBy=multi-user.target
Now, reload the systemd cache.
:~$ sudo systemctl daemon-reload
NOTE: It is not mandatory to create the file to transform ActiveMQ into a systemd service and in some cases, it can cause problems.
You can also start ActiveMQ with this command:
:~$ /opt/activemq/bin/activemq start
Also, you can use the newly created service:
:~$ sudo systemctl start activemq
Or stop it with this command:
:~$ /opt/activemq/bin/activemq stop
Next, let us configure it.
Open the activem.xml file. This file contains all ActiveMQ settings.
:~$ sudo nano /opt/activemq/conf/activemq.xml
Creating a transport connector
The first step is to configure the transport connector. Edit the file in question and place it in the transport connector section.
It’s a pretty large file, but with the help of nano, we can quickly find the sections. Press CTRL + W and type “transport”.
The syntax is very simple:
- broker_name: is the brokerName attribute of the tag broker of activemq.xml
- transportOptions: different communication options.
Now, the parameters URI is the in the connection type function. For example, you can specify a broker using TCP or VM.
Let us see an example:
<transportConnection name="openwire" uri="tcp://192.168.3.4:8765?trace=false&soTimeout=60000">
On the URI option, you have to add the protocol, the port, and the options.
System usage
It is also possible to limit the use of system resources. In the same file in the system usage section, you can configure it.
There you can limit, for example, the use of the hard disk and the RAM memory.
Finals settings
These are basic ActiveMQ configurations. One thing you can do is prevent the storage buffer from ending up with all the RAM. For that, in the same configuration file go to the policy entry section.
You can limit all the messages to a specific size.
Another thing ActiveMQ has a built-in database manager called KahaDB that is mainly in charge of storing messages. You can replace it with MySQL or MariaDB but KahaDB is very superior in performance, so it is not recommended to do this.
Finally, start ActiveMQ. Then, open your web browser and go to http://SERVER_IP:8161.
:~$ /opt/activemq/bin/activemq start
Conclusion
It is clear that ActiveMQ is an enterprise infrastructure software. Known and very popular for being efficient and a benchmark in its area.
Please share this post with your friends. Join our Telegram Channel.