Releases: rabbitmq/rabbitmqadmin-ng
v2.7.0
v2.7.0 (Jul 15, 2025)
Enhancements
-
rabbitmqadmin.conf
now supports more TLS-related settings:ca_certificate_bundle_path
(corresponds to--tls-ca-cert-file
on the command line),
client_certificate_file_path
(corresponds to--tls-cert-file
), andclient_private_key_file_path
(corresponds to--tls-key-file
).As the names suggest, they are used to configure the CA certificate bundle file path, the client certificate file path,
and the client private key file path, respectively:[production] hostname = "(redacted)" port = 15671 username = "user-efe1f4d763f6" password = "(redacted)" tls = true ca_certificate_bundle_path = "/path/to/ca_certificate.pem" client_certificate_file_path = "/path/to/client_certificate.pem" client_private_key_file_path = "/path/to/client_key.pem"
To learn more, see RabbitMQ's TLS guide.
Bug Fixes
- Tool version was unintentionally missing from
-h
output (but present in its long counterpart,--help
) - The
tls
setting inrabbitmqadmin.conf
, a--use-tls
equivalent, was not respected when connecting to a node
in certain cases
v2.6.0
v2.6.0 (Jul 12, 2025)
Enhancements
-
New command,
passwords salt_and_hash
, that implements the password salting and hashing algorithm
used by RabbitMQ's internal authentication backend:rabbitmqadmin passwords salt_and_hash "sEkr37^va1ue" # => ┌───────────────┬──────────────────────────────────────────────────┐ # => │ Result │ # => ├───────────────┼──────────────────────────────────────────────────┤ # => │ key │ value │ # => ├───────────────┼──────────────────────────────────────────────────┤ # => │ password hash │ vRZC0bF0Ut4+6pmcQRSu87S/wRXdHRalgY5DV/5KDd5SzK69 │ # => └───────────────┴──────────────────────────────────────────────────┘
This value can be passed as a
--password-hash
when creating a user with theusers declare
command. -
users declare
now supports a new argument,--hashing-algorithm
, that accepts two
possible values:sha256
(the default) andsha512
:# RabbitMQ nodes must also be configured to use SHA-512 password hashing, # or this user won't be able to authenticate against them rabbitmqadmin users declare --username "username43742" --password "example_%^4@8s7" --hashing-algorithm "sha512"
Target RabbitMQ nodes must be configured to use the same hashing algorithm (SHA-256 is
used by default).
v2.5.0
v2.5.0 (Jul 11, 2025)
Enhancements
-
definitions export
now supports a new transformation:prepare_for_quorum_queue_migration
.rabbitmqadmin definitions export --transformations prepare_for_quorum_queue_migration,drop_empty_policies --stdout
This one not only strips off the CMQ-related keys
but also handles an incompatible"overflow"
/"x-overflow"
key value
and"queue-mode"
/"x-queue-mode"
keys, both not supported
by quorum queues.
Bug Fixes
export definitions
CLI interface was unintentionally different from that ofdefinitions export
.
Note thatexport definitions
only exists for better backwards compatibility withrabbitmqadmin
v1,
usedefinitions export
when possible.
v2.4.0
v2.3.0
v2.2.1
v2.2.0
v2.2.0 (Jun 12, 2025)
Enhancements
connections
is a new command group for operations on connectionschannels
is a new command group for operations on channelsoperator_policies
is a new command group for working with operator policies.
It matches thepolicies
group but acts on operator policiespolicies set
andpolicies update
are two new aliases forpolicies declare
. The former follows the naming
used byrabbitmqctl
and the latter reflects the fact that the command can be used to update an existing policy,
in particular, to override its definitionpolicies patch
is a new command that updates a policy definition by merging the provided definition with the existing onepolicies delete_definition_keys
is a new command that removes keys from a policy definitionpolicies delete_definition_keys_from_all_in
is a new command that removes definition keys from all policies in a virtual hostpolicies update_definition
is a new command that updates a policy definition key; for multi-key updates, see `policies patchpolicies update_definitions_of_all_in
is a new command that updates a definition key for all policies in a virtual hostpolicies declare_override
is a new command that declares a policy that overrides another policypolicies declare_blanket
is a new command that declares a low priority policy that matches all objects not matched
by any other policiesparameters list_all
is a new command that lists all runtime parameters across all virtual hostsparameters list_in
is a new command that lists runtime parameters of a given component (type)
in a specific virtual host
v2.1.0
v2.1.0 (May 8, 2025)
Enhancements
bindings
is a new command group for operations on bindingsexchanges
is a new command group for operations on exchangesglobal_parameters
is a new command group for operations on global runtime parametersnodes
is a new command group for operations on nodesparameters
is a new command group for operations on runtime parametersqueues
is a new command group for operations on queuesstreams
is a new command group for operations on streamsusers
is a new command group for operations on usersvhosts
is a new command group for operations on virtual hosts- Command groups are now ordered alphabetically
Bug Fixes
- Both
-h
and--help
now display relevant doc guide URLs.
Previously it was only the case for--help
Other Changes
vhosts declare
no longer has a default value for--default-queue-type
.
Instead, the default will be controlled exclusively by RabbitMQ
v2.0.0
v2.0.0 (Mar 31, 2025)
Enhancements
Subcommand and Long Option Inference
If the RABBITMQADMIN_NON_INTERACTIVE_MODE
is not set to true
, this tool
now can infer subcommand and --long-option names.
This means that a subcommand can be referenced with its unique prefix,
that is,
- 'del queue' will be inferred as 'delete queue'
- 'del q --nam "a.queue"' will be inferred as 'delete queue --name "a.queue"'
To enable each feature, set the following environment variables to
'true':
RABBITMQADMIN_INFER_SUBCOMMANDS
RABBITMQADMIN_INFER_LONG_OPTIONS
This feature is only mean to be used interactively. For non-interactive
use, it can be potentially too dangerous to allow.
Intentionally Restricted Environment Variable Support
Environment variables have a number of serious downsides compared to a rabbitmqadmin.conf
and the regular --long-options
on the command line:
- Non-existent support for value types and validation ("everything is a string")
- Subprocess inheritance restrictions that can be very time-consuming to debug
- Different syntax for setting them between the classic POSIX-era shells (such as
bash
,zsh
) and modern ones (such asnushell
)
For these reasons and others, rabbitmqadmin
v2 intentionally uses the configuration file and the
CLI options over the environment variables.
rabbitmqadmin
v2 does, however, supports a number of environment variables for a few
global settings that cannot be configured any other way (besides a CLI option),
or truly represent an environment characteristic, e.g. either the non-interactive mode
should be enabled.
These environment variables are as follows:
Environment variable | Type | When used | Description |
---|---|---|---|
RABBITMQADMIN_CONFIG_FILE_PATH |
Local filesystem path | Pre-flight (before command execution) | Same meaning as the global --confg-file argument |
RABBITMQADMIN_NON_INTERACTIVE_MODE |
Boolean | Command execution | Enables the non-interactive mode. Same meaning as the global --non-interactive argument |
RABBITMQADMIN_QUIET_MODE |
Boolean | Command execution | Instructs the tool to produce less output. Same meaning as the global --quiet argument |
RABBITMQADMIN_INFER_SUBCOMMANDS |
Boolean | Pre-flight (before command execution) | Enables inference (completion of partial names) of subcommands. Does not apply to the non-interactive mode. |
RABBITMQADMIN_INFER_LONG_OPTIONS |
Boolean | Pre-flight (before command execution) | Enables inference (completion of partial names) of --long-options . Does not apply to the non-interactive mode. |
RABBITMQADMIN_NODE_ALIAS |
String | Command execution | Same meaning as the global --node argument |
RABBITMQADMIN_TARGET_HOST |
String | Command execution | Same meaning as the global --host argument |
RABBITMQADMIN_TARGET_PORT |
Positive integer | Command execution | Same meaning as the global --port argument |
RABBITMQADMIN_API_PATH_PREFIX |
String | Command execution | Same meaning as the global --path-prefix argument |
RABBITMQADMIN_TARGET_VHOST |
String | Command execution | Same meaning as the global --vhost argument |
RABBITMQADMIN_BASE_URI |
String | Command execution | Same meaning as the global --base-uri argument |
RABBITMQADMIN_USE_TLS |
Boolean | Command execution | Same meaning as the global --tls argument |
RABBITMQADMIN_USERNAME |
String | Command execution | Same meaning as the global --username argument |
RABBITMQADMIN_PASSWORD |
String | Command execution | Same meaning as the global --password argument |
RABBITMQADMIN_TABLE_STYLE |
Enum, see --table-style in rabbitmqadmin help |
Command execution | Same meaning as the global --table-style argument |
v0.29.0
v0.29.0 (Mar 23, 2025)
Breaking Changes
-
definitions export
's special--file
value of-
for "standard input" is deprecated. Use--stdout
instead:rabbitmqadmin definitions export --stdout > definitions.json
# exports 3.x-era definitions that might contain classic queue mirroring keys, transforms # them to not use any CMQ policies, injects an explicit queue type into the matched queues, # and drops all the policies that had nothing beyond the CMQ keys, # then passes the result to the standard input of # 'rabbitmqadmin definitions import --stdin' rabbitmqadmin --node "source.node" definitions export --transformations strip_cmq_keys_from_policies,drop_empty_policies --stdout | rabbitmqadmin --node "destination.node" definitions import --stdin
Enhancements
-
definitions import
now supports reading definitions from the standard input instead of a file.
For that, pass--stdin
instead of--file "/path/to/definitions.json"
.rabbitmqadmin definitions import --stdin < definitions.json
cat definitions.json | rabbitmqadmin definitions import --stdin
# exports 3.x-era definitions that might contain classic queue mirroring keys, transforms # them to not use any CMQ policies, injects an explicit queue type into the matched queues, # and drops all the policies that had nothing beyond the CMQ keys, # then passes the result to the standard input of # 'rabbitmqadmin definitions import --stdin' rabbitmqadmin --node "source.node" definitions export --transformations strip_cmq_keys_from_policies,drop_empty_policies --stdout | rabbitmqadmin --node "destination.node" definitions import --stdin