RabbitMQ Performance Testing Tool
This repository contains source code of the RabbitMQ Performance Testing Tool. The client is maintained by the RabbitMQ team at VMware.
Running Performance Tests
Assuming the current directory is the root directory of the binary distribution, to launch a performance test with 1 producer and 1 consumer:
bin/runjava com.rabbitmq.perf.PerfTest --help
to see all supported options.
Producing HTML Output of Runs
The HTML Performance Tools are a set of tools that can help you run
automated benchmarks by wrapping around the
framework. You can provide benchmark specs, and the tool will take care
of running the benchmark, collecting results and displaying them in an
HTML page. Learn more here.
See CONTRIBUTING.md for an overview of the development process.
Building from Source
To build the JAR file:
./mvnw clean package -Dmaven.test.skip
Files are then in the
To build the JAR file, source and binary distributions:
./mvnw clean package -P assemblies -Dgpg.skip=true -Dmaven.test.skip
The test suite needs to execute
rabbitmqctl to test connection recovery. You
can specify the path to
rabbitmqctl like the following:
./mvnw clean verify -Drabbitmqctl.bin=/path/to/rabbitmqctl
You need a local running RabbitMQ instance.
Running tests with Docker
Start a RabbitMQ container:
docker run -it --rm --name rabbitmq -p 5672:5672 rabbitmq:3.8
Run the test suite:
./mvnw clean verify -Drabbitmqctl.bin=DOCKER:rabbitmq
Files are then in the
PerfTest depends transitively on SLF4J for logging (through RabbitMQ Java Client).
PerfTest binary distribution
ships with Logback as a SLF4J binding and uses Logback default configuration (printing logs to the console). If
for any reason you need to use a specific Logback configuration file, you can do it this way:
bin/runjava -Dlogback.configurationFile=/path/to/logback.xml com.rabbitmq.perf.PerfTest
As of PerfTest 2.11.0, it is possible to define loggers directly from the command line. This is less powerful
than using a configuration file, yet simpler to use and useful for quick debugging. Use the
system property with
name=level pairs, e.g.:
bin/runjava -Drabbitmq.perftest.loggers=com.rabbitmq.perf=debug com.rabbitmq.perf.PerfTest
It is possible to define several loggers by separating them with commas, e.g.
It is also possible to use an environment variable:
The system property takes precedence over the environment variable.
Use the environment variable with the Docker image:
docker run -it --rm --network perf-test \ --env RABBITMQ_PERF_TEST_LOGGERS=com.rabbitmq.perf=debug,com.rabbitmq.perf.Producer=debug \ pivotalrabbitmq/perf-test:latest --uri amqp://rabbitmq
If you use
PerfTest as a standalone JAR in your project, please note it doesn't depend on any SLF4J binding,
you can use your favorite one.
This tool uses semantic versioning.
See the RabbitMQ Java libraries support page for the support timeline of this library.
This package, the RabbitMQ Performance Testing Tool library, is triple-licensed under the Mozilla Public License 2.0 ("MPL"), the GNU General Public License version 2 ("GPL") and the Apache License version 2 ("ASL").