Unable to find an ActiveMQ docker that allows for remote JMX access I created one based on the Dockerfile from rmohr/activemq. The docker also includes the hawtio web console.
To run the container:
docker run -p 61616:61616 -p 8161:8161 -p 1099:1099 antonw/activemq-jmx
Name | Default Value |
---|---|
ACTIVEMQ_RMI_SERVER_HOSTNAME | localhost |
ACTIVEMQ_BASE | /opt/activemq |
ACTIVEMQ_CONF | /opt/activemq/conf |
ACTIVEMQ_DATA | /var/activemq/data |
The default configuration allows for remote JMX access if the JMX client runs on localhost and localhost is also the docker host.
If the docker host is a virtual machine or the JMX client does not run on localhost then ACTIVEMQ_RMI_SERVER_HOSTNAME must be set to the externally accessible IP address of the ActiveMQ server, for example:
docker run -e ACTIVEMQ_RMI_SERVER_HOSTNAME='192.168.0.10' -p 61616:61616 -p 8161:8161 -p 1099:1099 antonw/activemq-jmx
Port | Protocol |
---|---|
8161 | HTTP (ActiveMQ Web Console root context path: "/", hawtio context path: "/hawtio") |
61616 | OPENWIRE |
5672 | AMQP |
61613 | STOMP |
1883 | MQTT |
61614 | WS |
1099 | JMX |
activemq-cli is a command-line utility I developed to interact with a Apache JMX enabled ActiveMQ message broker. Check out GitHub for more information.
Assuming both the activemq-cli utility and the activemq-jmx docker are running on localhost, below is the configuration that will allow activemq-cli to connect to the ActiveMQ broker.
broker {
local {
amqurl = "tcp://localhost:61616"
jmxurl = "service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi"
username = "amq"
password = "amq"
prompt-color = "light-blue"
}
}