2014-12-11 07:17:29 -05:00
|
|
|
# Using the Server
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2015-04-27 17:32:30 -04:00
|
|
|
This chapter will familiarise you with how to use the Apache ActiveMQ Artemis server.
|
2014-12-04 10:25:29 -05:00
|
|
|
|
|
|
|
We'll show where it is, how to start and stop it, and we'll describe the
|
|
|
|
directory layout and what all the files are and what they do.
|
|
|
|
|
2015-04-27 17:32:30 -04:00
|
|
|
For the remainder of this chapter when we talk about the Apache ActiveMQ Artemis server
|
|
|
|
we mean the Apache ActiveMQ Artemis standalone server, in its default configuration
|
2014-12-16 05:27:08 -05:00
|
|
|
with a JMS Service enabled.
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2015-04-15 18:45:37 -04:00
|
|
|
This document will refer to the full path of the directory where the ActiveMQ
|
2015-04-29 09:28:11 -04:00
|
|
|
distribution has been extracted to as `${ARTEMIS_HOME}` directory.
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2015-04-15 18:45:37 -04:00
|
|
|
## Creating a Broker Instance
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2015-04-15 18:45:37 -04:00
|
|
|
A broker instance is the directory containing all the configuration and runtime
|
|
|
|
data, such as logs and data files, associated with a broker process. It is recommended that
|
2015-04-29 09:28:11 -04:00
|
|
|
you do *not* create the instance directory under `${ARTEMIS_HOME}`. This separation is
|
2015-05-13 06:12:07 -04:00
|
|
|
encouraged so that you can more easily upgrade when the next version of ActiveMQ Artemis is released.
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2015-04-15 18:45:37 -04:00
|
|
|
On Unix systems, it is a common convention to store this kind of runtime data under
|
|
|
|
the `/var/lib` directory. For example, to create an instance at '/var/lib/mybroker', run
|
|
|
|
the following commands in your command line shell:
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2015-04-15 18:45:37 -04:00
|
|
|
cd /var/lib
|
2015-04-29 09:28:11 -04:00
|
|
|
${ARTEMIS_HOME}/bin/activemq create mybroker
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2015-04-15 18:45:37 -04:00
|
|
|
A broker instance directory will contain the following sub directories:
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2015-04-15 18:45:37 -04:00
|
|
|
* `bin`: holds execution scripts associated with this instance.
|
|
|
|
* `etc`: hold the instance configuration files
|
|
|
|
* `data`: holds the data files used for storing persistent messages
|
|
|
|
* `log`: holds rotating log files
|
|
|
|
* `tmp`: holds temporary files that are safe to delete between broker runs
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2015-04-15 18:45:37 -04:00
|
|
|
At this point you may want to adjust the default configuration located in
|
|
|
|
the `etc` directory.
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2015-04-15 18:45:37 -04:00
|
|
|
### Starting and Stopping a Broker Instance
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2015-04-15 18:45:37 -04:00
|
|
|
Assuming you created the broker instance under `/var/lib/mybroker` all you need
|
|
|
|
to do start running the broker instance is execute:
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2015-04-15 18:45:37 -04:00
|
|
|
/var/lib/mybroker/bin/activemq run
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2015-04-15 18:45:37 -04:00
|
|
|
Now that the broker is running, you can optionally run some of the included
|
|
|
|
examples to verify the the broker is running properly.
|
2015-03-04 07:28:20 -05:00
|
|
|
|
2015-04-27 17:32:30 -04:00
|
|
|
To stop the Apache ActiveMQ Artemis instance you will use the same `activemq` script, but with
|
2015-04-15 18:45:37 -04:00
|
|
|
the `stop argument`. Example:
|
2015-03-04 07:28:20 -05:00
|
|
|
|
2015-04-15 18:45:37 -04:00
|
|
|
/var/lib/mybroker/bin/activemq stop
|
2015-03-04 07:28:20 -05:00
|
|
|
|
2015-04-27 17:32:30 -04:00
|
|
|
Please note that Apache ActiveMQ Artemis requires a Java 7 or later runtime to run.
|
2015-03-04 07:28:20 -05:00
|
|
|
|
2015-04-15 18:45:37 -04:00
|
|
|
By default the `etc/bootstrap.xml` configuration is
|
|
|
|
used. The configuration can be changed e.g. by running
|
|
|
|
`./activemq run -- xml:path/to/bootstrap.xml` or another
|
|
|
|
config of your choosing.
|
|
|
|
|
|
|
|
Environment variables are used to provide ease of changing ports, hosts and
|
|
|
|
data directories used and can be found in `etc/activemq.profile` on linux and
|
|
|
|
`etc\activemq.profile.cmd` on Windows.
|
2015-03-04 07:28:20 -05:00
|
|
|
|
2014-12-11 07:17:29 -05:00
|
|
|
## Server JVM settings
|
2014-12-04 10:25:29 -05:00
|
|
|
|
|
|
|
The run scripts set some JVM settings for tuning the garbage collection
|
|
|
|
policy and heap size. We recommend using a parallel garbage collection
|
|
|
|
algorithm to smooth out latency and minimise large GC pauses.
|
|
|
|
|
2015-04-27 17:32:30 -04:00
|
|
|
By default Apache ActiveMQ Artemis runs in a maximum of 1GiB of RAM. To increase the
|
2014-12-04 10:25:29 -05:00
|
|
|
memory settings change the `-Xms` and `-Xmx` memory settings as you
|
|
|
|
would for any Java program.
|
|
|
|
|
|
|
|
If you wish to add any more JVM arguments or tune the existing ones, the
|
|
|
|
run scripts are the place to do it.
|
|
|
|
|
2014-12-11 07:17:29 -05:00
|
|
|
## Pre-configured Options
|
2014-12-04 10:25:29 -05:00
|
|
|
|
|
|
|
The distribution contains several standard configuration sets for
|
|
|
|
running:
|
|
|
|
|
|
|
|
- Non clustered stand-alone.
|
|
|
|
|
|
|
|
- Clustered stand-alone
|
|
|
|
|
|
|
|
- Replicated stand-alone
|
|
|
|
|
|
|
|
- Shared-store stand-alone
|
|
|
|
|
|
|
|
You can of course create your own configuration and specify any
|
|
|
|
configuration when running the run script.
|
|
|
|
|
2014-12-11 07:17:29 -05:00
|
|
|
## Library Path
|
2014-12-04 10:25:29 -05:00
|
|
|
|
|
|
|
If you're using the [Asynchronous IO Journal](#aio-journal) on Linux,
|
|
|
|
you need to specify `java.library.path` as a property on your Java
|
|
|
|
options. This is done automatically in the scripts.
|
|
|
|
|
|
|
|
If you don't specify `java.library.path` at your Java options then the
|
|
|
|
JVM will use the environment variable `LD_LIBRARY_PATH`.
|
|
|
|
|
2014-12-11 07:17:29 -05:00
|
|
|
## System properties
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2015-04-27 17:32:30 -04:00
|
|
|
Apache ActiveMQ Artemis can take a system property on the command line for configuring
|
2014-12-04 10:25:29 -05:00
|
|
|
logging.
|
|
|
|
|
2015-01-21 13:46:15 -05:00
|
|
|
For more information on configuring logging, please see the section on
|
|
|
|
[Logging](logging.md).
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2014-12-11 07:17:29 -05:00
|
|
|
## Configuration files
|
2014-12-04 10:25:29 -05:00
|
|
|
|
|
|
|
The configuration file used to bootstrap the server (e.g.
|
|
|
|
`bootstrap.xml` by default) references the specific broker configuration
|
|
|
|
files.
|
|
|
|
|
2015-04-29 05:30:31 -04:00
|
|
|
- `broker.xml`. This is the main ActiveMQ
|
2015-03-12 14:04:04 -04:00
|
|
|
configuration file. All the parameters in this file are
|
|
|
|
described [here](configuration-index.md)
|
2014-12-04 10:25:29 -05:00
|
|
|
|
|
|
|
It is also possible to use system property substitution in all the
|
|
|
|
configuration files. by replacing a value with the name of a system
|
|
|
|
property. Here is an example of this with a connector configuration:
|
|
|
|
|
2015-02-24 10:50:54 -05:00
|
|
|
<connector name="netty">tcp://${activemq.remoting.netty.host:localhost}:${activemq.remoting.netty.port:61616}</connector>
|
2014-12-04 10:25:29 -05:00
|
|
|
|
|
|
|
Here you can see we have replaced 2 values with system properties
|
|
|
|
`activemq.remoting.netty.host` and `activemq.remoting.netty.port`. These
|
|
|
|
values will be replaced by the value found in the system property if
|
2015-02-24 10:50:54 -05:00
|
|
|
there is one, if not they default back to localhost or 61616
|
2014-12-04 10:25:29 -05:00
|
|
|
respectively. It is also possible to not supply a default. i.e.
|
|
|
|
`${activemq.remoting.netty.host}`, however the system property *must* be
|
|
|
|
supplied in that case.
|
|
|
|
|
2014-12-11 07:17:29 -05:00
|
|
|
## Bootstrap File
|
2014-12-04 10:25:29 -05:00
|
|
|
|
|
|
|
The stand-alone server is basically a set of POJOs which are
|
|
|
|
instantiated by Airline commands.
|
|
|
|
|
|
|
|
The bootstrap file is very simple. Let's take a look at an example:
|
|
|
|
|
|
|
|
<broker xmlns="http://activemq.org/schema">
|
|
|
|
|
2015-04-29 05:30:31 -04:00
|
|
|
<file:core configuration="${activemq.home}/config/stand-alone/non-clustered/broker.xml"></core>
|
2014-12-04 10:25:29 -05:00
|
|
|
|
|
|
|
<basic-security/>
|
|
|
|
|
|
|
|
</broker>
|
|
|
|
|
2014-12-11 07:17:29 -05:00
|
|
|
- core - Instantiates a core server using the configuration file from the
|
2014-12-04 10:25:29 -05:00
|
|
|
`configuration` attribute. This is the main broker POJO necessary to
|
2015-01-21 13:46:15 -05:00
|
|
|
do all the real messaging work. In addition all JMS objects such as:
|
|
|
|
Queues, Topics and ConnectionFactory instances are configured here.
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2014-12-11 07:17:29 -05:00
|
|
|
## The main configuration file.
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2015-04-27 17:32:30 -04:00
|
|
|
The configuration for the Apache ActiveMQ Artemis core server is contained in
|
2015-04-29 05:30:31 -04:00
|
|
|
`broker.xml`. This is what the FileConfiguration bean
|
2014-12-04 10:25:29 -05:00
|
|
|
uses to configure the messaging server.
|
|
|
|
|
2015-04-27 17:32:30 -04:00
|
|
|
There are many attributes which you can configure Apache ActiveMQ Artemis. In most
|
2014-12-04 10:25:29 -05:00
|
|
|
cases the defaults will do fine, in fact every attribute can be
|
|
|
|
defaulted which means a file with a single empty `configuration` element
|
|
|
|
is a valid configuration file. The different configuration will be
|
|
|
|
explained throughout the manual or you can refer to the configuration
|
|
|
|
reference [here](#configuration-index).
|