RabbitMQ


This section contains server installation instructions for various platforms. You can download example programs, utilities, Java client libraries and bindings to various third-party management, monitoring and routing tools from http://www.rabbitmq.com/.

Windows

Installation from a complete bundle

The bundle zip file contains all the files listed in the next section, including an Erlang system installer and the RabbitMQ broker binary distribution, as well as an archive of the Java librabbitmq client library,

Installation from separate components

  • Install a recent version of Erlang. Any recent version should work, but we are developing against Erlang R11B-5 on Windows, which can be downloaded from http://www.erlang.org/download/otp_win32_R11B-5.exe
  • Download rabbitmq-server-version.zip, where version is the version of RabbitMQ Server you want to install.
  • Contained in the zip file is a directory named rabbitmq_server-version. You can either extract this folder into C:\Program Files\erl5.5.5\lib (or if you use a different Erlang version, the corresponding lib directory) or extract it elsewhere and set the environment variable ERLANG_HOME to point to your Erlang directory (e.g. C:\Program Files\erl5.5.5).
  • Within the sbin directory is a file rabbitmq-server.bat which may need customisation for your installation, especially if you use a different version of Erlang. Environment variables set within the batch file are
    ERLANG_HOME
    Set this to the base directory of your Erlang installation, e.g. C:\Program Files\erl5.5.5. The RabbitMQ batch file expects the file bin\erl.exe to be present at this location. The default setting determines the base directory from the script location, which will work in most cases.
    RABBITMQ_BASE
    Defaults to the directory rabbitmq in the user's home directory, e.g. C:\Documents and Settings\User\rabbitmq. This is the base directory containing sub-directories for the RabbitMQ Server's database and log files. Alternatively, set MNESIA_BASE and LOG_BASE individually.
    MNESIA_BASE
    Defaults to %RABBITMQ_BASE%\db. Set this to the directory where Mnesia database files should be placed.
    LOG_BASE
    Defaults to %RABBITMQ_BASE%\log. Log files generated by the server will be placed in this directory.
    NODENAME
    Defaults to rabbit. This can be useful if you want to run more than one node per machine - NODENAME should be unique per erlang-node-and-machine combination. See clustering on a single machine for more.
    NODE_IP_ADDRESS
    Defaults to 0.0.0.0. This can be changed if you only want to bind to one network interface. Please note that Windows 2000 (and maybe earlier versions) do not understand "0.0.0.0" and will need to have this set explicitly.
    NODE_PORT
    Defaults to 5672.
    CLUSTER_CONFIG_FILE
    Defaults to %RABBITMQ_BASE%\rabbitmq_cluster.config. If this file is present it used by the server to auto-configure a RabbitMQ cluster. See the clustering guide for details.

Running the Server

Currently, it's sufficient to change directory to rabbitmq_server-version\sbin and double-click the rabbitmq-server.bat file.

The shell window that results displays a banner message, and reports on progress in the startup sequence, concluding with the message "broker running", indicating that the RabbitMQ broker has been started successfully. To shut down the server, close the shell window. Alternatively, use the rabbitmqctl stop command.

Debian GNU/Linux

Installation Instructions

  • Install rabbitmq-server_version_all.deb (which you can download by hand, or by using our APT repository). The server should start with appropriate defaults. Note that the package depends on erlang-base packages, so if you use apt on a Debian distribution that has erlang-base packages available, all dependencies should be properly met.
  • To adjust the defaults, edit /etc/default/rabbitmq, setting environment variables to affect /usr/sbin/rabbitmq-server as described in the Generic Unix section below. You can additionally set NODE_COUNT in /etc/default/rabbitmq to define the number of nodes to run on a single machine.

Running the Server

The server is started as a daemon by default when the RabbitMQ Server package is installed. Start and stop the server as usual for Debian using invoke-rc.d rabbitmq-server stop/start/etc.

The server is set up to run as system user rabbitmq. This means that if you change the location of the Mnesia database or logs as described below, you must ensure the files are owned by this user.

The startup script waits for a limited amount of time, 30 seconds by default, for the broker nodes to start. When that time is exceeded a TIMEOUT is reported. The cause of this could be a misconfiguration or other error. However, it is also possible that the node simply is taking a long time to start up, perhaps because the machine it is running on is heavily loaded, or there are many persisted messages or durable queues and exchanges that need to be recovered. For that reason the timeout can be adjusted by setting START_ARGS to "-maxwait timeout_in_seconds" in /etc/default/rabbitmq.

Generic Unix or Linux (BSD, Mac OS X, etc.)

Installation Instructions

  • Install a recent version of Erlang.
  • Download rabbitmq-server-version.tar.gz, where version is the version of RabbitMQ Server you want to install.
  • Contained in the tarball is a directory named rabbitmq_server-version. You can either extract the tarball into /usr/lib/erlang/lib directory (or wherever your Erlang installation places its application and library directory) or extract it elsewhere and set the environment variable ERLANG_HOME to point to your Erlang directory (e.g. /usr/lib/erlang).
  • Within the sbin directory is a shell script rabbitmq-server which may need customisation for your installation. You can either edit the file directly, or place shell commands in /etc/default/rabbitmq, which is a shell script included by the distribution rabbitmq-server script. Environment variables available for configuration are
    MNESIA_BASE
    Defaults to /var/lib/rabbitmq/mnesia. Set this to the directory where Mnesia database files should be placed.
    LOG_BASE
    Defaults to /var/log/rabbitmq. Log files generated by the server will be placed in this directory.
    NODENAME
    Defaults to rabbit. This can be useful if you want to run more than one node per machine - NODENAME should be unique per erlang-node-and-machine combination. See clustering on a single machine for more.
    NODE_IP_ADDRESS
    Defaults to 0.0.0.0. This can be changed if you only want to bind to one network interface.
    NODE_PORT
    Defaults to 5672.
    CLUSTER_CONFIG_FILE
    Defaults to /etc/default/rabbitmq_cluster.config. If this file is present it used by the server to auto-configure a RabbitMQ cluster. See the clustering guide for details.

Running the Server

Invoke the rabbitmq-server shell script. This displays a banner message, and reports on progress in the startup sequence, concluding with the message "broker running", indicating that the RabbitMQ broker has been started successfully. To shut down the server just terminate the process. Alternatively, use the rabbitmqctl stop command.

You can also start the server in "detached" mode with rabbitmq-server -detached, in which case the server process is backgrounded immediately and nothing is written to the console.

Logging

Output from the server is sent to a NODENAME.log file in the LOG_BASE directory. Additional log data is written to NODENAME-sasl.log.

The log files are created afresh every time the broker starts. In order to retain a complete log history the startup scripts append the contents to corresponding .bak files prior to starting the broker.

Troubleshooting

If the server fails to start, examine the console output and the log files in the LOG_BASE directory for clues. Chances are there is a configuration error, e.g. the mnesia directory cannot be created or the TCP port on which RabbitMQ tries to listen is already taken.

When the server fails to start, usually a crash dump file erl_crash.dump is created in the directory where the server was started. This can provide very detailed information on the causes of a start up failure, but its analysis requires Erlang expertise.

If the server is not behaving as expected during operation, examine the log files for clues and use the rabbitmqctl commands from the admin guide to obtain further information on the server status.

For problems encountered in the handling of AMQP traffic, the AMQP capture and analysis tool may help in the analysis.

If all of the above fails, report the problem to support@rabbitmq.com and include the log files under LOG_BASE in your report.