As of v3.7.0 Milestone 8,
RabbitMQ ships with a brand new set of CLI tools (rabbitmqctl
, rabbitmq-plugins
, and more), reworked from the ground-up. We had a few goals with this project.
We wanted to use a more user-friendly command line parser and produce more useful help and error messages.
- CLI tools should be extensible from plugins: plugins such as management, federation, shovel, trust store all have functions that are meant to be invoked by CLI tools but the only way of doing it was
rabbitmqctl eval
, which is error prone and can be dangerous. - We wanted to give Elixir a try on a real project and make it easier for developers new to Erlang to extend the CLI functionality.
- Our CLI tools historically didn't have good test coverage; the new ones should (and do).
- CLI tools should be able to produce machine-friendly formats, be it JSON, CSV or something else; there was no internal infrastructure for doing that in the original implementation.
- CLI tools should be a separate repository just like all plugins, client libraries, and so on.
Nine months later the experiment was declared a success and integrated into RabbitMQ distribution.
Please give v3.7.0 Milestone 8 a try and take a look at how easy it is to extend the CLI.
There's also a longer document that covers new features and implementation decisions.