Enterprise Java

Starting multiple JBoss A-MQ JVMs on the same machine

So I haven’t been blogging as much recently — just been really busy. But my New Year’s resolution is to blog a little more sharing some things I come across frequently, even if it’s simple stuff that might help some people out.

So for this entry, I’ll show a quick way to start up multiple JBoss A-MQ instances on a single machine. The reason why this question comes up is because JBoss A-MQ includes a little more “enterprise” ready features out of the box than plain old community ActiveMQ. JBoss A-MQ is a production-ready, hardened, version of ActiveMQ, and it’s packaged inside Apache Karaf with some other features like the HawtIO console (and more).
 
 
What happens when people are trying to simulate more complex deployment scenarios in a lab or development environment, they may not have access to multiple VMs or machines to try out a full real-world deployment. So they may want to install multiple brokers on a single box. This is pretty straight forward, and all you have to do is make sure the default ports don’t conflict. NOTE: this is not intended to be a production deployment!!! Don’t deploy this way to production!!

You can get pretty wacky and customize each additional A-MQ/Karaf JVM with the Karaf admin commands but if you want to just get something working and want to understand where the port conflicts can be, check this out:

Download JBoss A-MQ

Go to the Red Hat support portal (or JBoss.org) and download the copy of JBoss A-MQ you want to use. Note, the bits are the same from whichever website you download from, but you need a valid subscription to use in any shared environments (anything excluding your development laptop).

For this exercise, we’re using JBoss A-MQ 6.1 (filename jboss-a-mq-6.1.0.redhat-379.zip)

Install into two locations

If we want to have two separate JBoss A-MQ brokers, let’s start by unpacking into two separate locations:

~> unzip jboss-a-mq-6.1.0.redhat-379.zip -d amq01
~> unzip jboss-a-mq-6.1.0.redhat-379.zip -d amq02

Now in each installation path (eg, ./amq01/jboss-a-mq-6.1.0.redhat-379), which we’ll call the broker’s BASE directory, find the files in the $BASE/etc folder with the name users.properties. Uncomment the last line in that file so we have an admin user.

Change ports

Last step we need to do is change the ports in the installation for amq02 so they don’t conflict.

There are three files we’ll need to touch, which are the config PIDs for the services that run in the container.

  • etc/org.apache.karaf.management.cfg

In this file, edit the following properties:

rmiRegistryPort = 1098  #default is 1099
rmiServerPort = 44445   #default is 44444

Note, those are the changed values. You can change them to whatever you want.

  • etc/org.apache.karaf.shell.cfg

In this file, edit the following properties:

sshPort = 8102  #default is 8101
  • etc/system.properties

And lastly, in this file, edit:

org.osgi.service.http.port=8182   #default is 8181
activemq.port = 61617   #default is 61616
activemq.jmx.url=service:jmx:rmi:///jndi/rmi://localhost:1098/karaf-${karaf.name}

Start up your brokers

Go and start up your brokers with $BASE/bin/amq script, and you should have two running brokers, without collisions on ports.

Christian Posta

Christian is a Principal Consultant at FuseSource specializing in developing enterprise software applications with an emphasis on software integration and messaging. His strengths include helping clients build software using industry best practices, Test Driven Design, ActiveMQ, Apache Camel, ServiceMix, Spring Framework, and most importantly, modeling complex domains so that they can be realized in software. He works primarily using Java and its many frameworks, but his favorite programming language is Python. He's in the midst of learning Scala and hopes to contribute to the Apache Apollo project.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Back to top button