No changes yet.
streams declaredid not respect the max age argument
rabbitmq_http_clientupgraded to0.88.0
- A new global CLI flag,
--verbose(-v), causesrabbitmqadminlog HTTP requests and responses to the standard error stream
- Command execution code path could silently misclassify certain errors
- Select error messages now include the underlying error details
rabbitmq_http_clientupgraded to0.86.0
-
For HTTPS connections, the list of trusted CAs is now loaded via
rustls/rustls-platform-verifierwhich is stricter (respects CA constraints, takes revocation mechanisms into consideration).This change is backwards compatible for almost every setup, at least given that the certificates use correct constraints and were not revoked.
rabbitmq_http_clientupgraded to0.85.0clapupgraded to4.6.0clap_completeupgraded to4.6.0clap_complete_nushellupgraded to4.6.0assert_cmdupgraded to2.2.0
- Publishing to crates.io now uses Trusted Publishing
- Release action (
michaelklishin/rust-build-package-release-action) upgraded to v2 - CI now includes a security audit job (
rustsec/audit-check)
rabbitmq_http_clientupgraded to0.83.0clapupgraded to4.5.58clap_completeupgraded to4.5.66indicatifupgraded to0.18.4predicatesupgraded to3.1.4proptestupgraded to1.10.0regexupgraded to1.12.3
-
permissions,user_limits, and their old-style equivalents (declare permissions,delete permissions,declare user_limit,delete user_limit,list user_limits) now use--usernameinstead of--user:rabbitmqadmin permissions declare --username "user1" --configure ".*" --read ".*" --write ".*" rabbitmqadmin permissions delete --username "user1" rabbitmqadmin user_limits declare --username "user1" --name "max-connections" --value "100" rabbitmqadmin user_limits delete --username "user1" --name "max-connections" rabbitmqadmin user_limits list --username "user1" # old-style (verb-style command group) equivalents rabbitmqadmin declare permissions --username "user1" --configure ".*" --read ".*" --write ".*" rabbitmqadmin declare user_limit --username "user1" --name "max-connections" --value "100"
--useris still accepted as a hidden backwards-compatible alias
-
shell completionsgenerates shell completion scripts for Nu shell, bash, zsh, fish, elvish:# Generate completions for a specific shell rabbitmqadmin shell completions --shell nushell rabbitmqadmin shell completions --shell zsh rabbitmqadmin shell completions --shell bash rabbitmqadmin shell completions --shell fish rabbitmqadmin shell completions --shell elvish # When invoked without --shell, tries to detect the shell using the SHELL environment variable # and if that fails, defaults to bash rabbitmqadmin shell completions
- Release infrastructure: adopt
michaelklishin/rust-build-package-release-action
bel7-cliupgraded to0.8.0- New dependencies:
clap_completeat4.5andclap_complete_nushellat4.5
- RabbitMQ 3.12.x and 3.13.x compatibility for federation commands:
--queue-typeis now optional - RabbitMQ 3.12.x compatibility for shovel commands:
--src-predeclaredand--dest-predeclaredare no longer included into RabbitMQ HTTP API requests when set tofalse
rabbitmq_http_clientupgraded to0.76.0
-
policies delete_definition_keys_from_allis an equivalent ofpolicies delete_definition_keys_from_all_inthat deletes definition keys from all policies across all virtual hosts in the cluster:rabbitmqadmin policies delete_definition_keys_from_all --definition-keys federation-upstream-set
For example, this command can be used to temporarily disable federation across all virtual hosts.
-
policies update_definitions_of_allis an equivalent ofpolicies update_definitions_of_all_inthat updates definitions of all policies across all virtual hosts in the cluster:rabbitmqadmin policies update_definitions_of_all --definition-key federation-upstream-set --new-value all
Similarly to
policies delete_definition_keys_from_all, this command can be used to [re-]enable federation across all virtual hosts.
- When
--tls-ca-cert-fileis provided, only that CA is trusted (previously it was added to the system trust store)
-
queues listnow supports--columnsfor selecting specific columns to display:rabbitmqadmin queues list --columns name,queue_type,message_count rabbitmqadmin queues list --columns name
Column names are case-insensitive. Unknown columns are silently ignored.
-
queues showis a new command that displays select metrics of a single queue:rabbitmqadmin queues show --name "events.incoming" rabbitmqadmin queues show --name "orders.pending" --columns name,queue_type,message_count
-
streams listnow supports--columnsfor consistency withqueues list:rabbitmqadmin streams list --columns name,queue_type
-
streams showis a stream equivalent ofqueues show:rabbitmqadmin streams show --name "events.stream" rabbitmqadmin streams show --name "events.stream" --columns name,queue_type
-
config_fileis a new command group for operations onrabbitmqadminconfiguration files:rabbitmqadmin config_file show_path # Show all configured nodes (passwords masked by default) rabbitmqadmin config_file show rabbitmqadmin config_file show --reveal-passwords # Add a new node (fails if an entry with this name already exists) rabbitmqadmin config_file add_node --node experiment-001 --host rabbit.eng.example.com --port 15672 --username admin --password secret --vhost / # Update an existing node (or create one if it does not exist). # Only the specified fields are updated; unspecified fields are preserved. rabbitmqadmin config_file update_node --node experiment-001 --host new-rabbit.eng.example.com --port 15673 # Enable TLS for a node (other settings like username, password are preserved) rabbitmqadmin config_file update_node --node experiment-001 --use-tls --port 15671 # Disable TLS for a node (other settings are preserved) rabbitmqadmin config_file update_node --node experiment-001 --scheme http --port 15672 # Delete a node (a configuration file entry) rabbitmqadmin config_file delete_node --node experiment-001
- Fixed a few copy-paste errors in command descriptions in the
streamgroup
rabbitmq_http_clientupgraded to0.73.0reqwestupgraded to0.13.x
--tls-ca-cert-filewas not correctly applied, causing peer verification of connections to TLS-enabled endpoints that don't share the same CA chain as the client to fail with anUnknownIssuer
- Binary releases that use statically linked MUSL for Alpine Linux
rabbitmqadminusers now can build the tool with native TLS support (via thenative-tlsfeature, on by default) or Rustls, for example, when targeting platforms that do not provide a dynamically linkable TLS library
definitions exportanddefinitions export_from_vhostnow exit with an error code should a file write fail
- RabbitMQ HTTP API client was upgraded to
0.71.0
--pageand--page-sizeoptions for paginated listing of queues, streams, and connections
- RabbitMQ HTTP API client was upgraded to
0.70.0
-
New command,
auth_attempts stats, displays authentication attempt statistics per protocol:rabbitmqadmin auth_attempts stats --node rabbit@target.hostname
- RabbitMQ HTTP API client was upgraded to
0.68.0
-
pluginsis a new command group for listing enabled plugins:# List plugins across all cluster nodes rabbitmqadmin plugins list_all # List plugins on a specific node rabbitmqadmin plugins list_on_node --node rabbit@hostname
-
Errors now include the
errororreasonfield from the API response (if they were present there) -
--timeoutis a new global option limits HTTP API request execution timeout. The value is in seconds and defaults to 60s:rabbitmqadmin --timeout 15 queues list
- RabbitMQ HTTP API client was upgraded to
0.66.0
-
permissionsis a new command group for operations on user permissions:rabbitmqadmin permissions list rabbitmqadmin permissions declare --user "user1" --configure ".*" --read ".*" --write ".*" rabbitmqadmin permissions delete --user "user1"
-
user_limitsis a new command group for operations on per-user limits:rabbitmqadmin user_limits list rabbitmqadmin user_limits declare --user "user1" --name "max-connections" --value "100" rabbitmqadmin user_limits delete --user "user1" --name "max-connections"
-
vhost_limitsis a new command group for operations on virtual host limits:rabbitmqadmin vhost_limits list rabbitmqadmin vhost_limits declare --name "max-connections" --value "1000" rabbitmqadmin vhost_limits delete --name "max-connections"
- "Verb" command groups (
list [object],declare [object],delete [object]) are now deprecated in favor of the "noun" group commands (such asusers [operation]orpermissions [operation]).
-
Several commands now have minimalistic progress indicators:
federation disable_tls_peer_verification_for_all_upstreams,federation enable_tls_peer_verification_for_all_upstreams,shovels disable_tls_peer_verification_for_all_source_uris,shovels disable_tls_peer_verification_for_all_destination_uris,shovels enable_tls_peer_verification_for_all_source_uris, andshovels enable_tls_peer_verification_for_all_destination_uris -
vhosts delete_multipleis a new command that deletes multiple virtual hosts matching a regular expression pattern:# Delete all virtual hosts matching a pattern (requires explicit approval) rabbitmqadmin vhosts delete_multiple --name-pattern "test-.*" --approve # Dry-run to see what would be deleted without actually deleting rabbitmqadmin vhosts delete_multiple --name-pattern "staging-.*" --dry-run # Non-interactive mode (no --approve flag needed) rabbitmqadmin --non-interactive vhosts delete_multiple --name-pattern "temp-.*"
One virtual host — named
/, that is, the default one — is always skipped to preserve at least one functional virtual host at all times.Important: this command is very destructive and should be used with caution. Always test with
--dry-runfirst. -
vhosts enable_deletion_protectionandvhosts disable_deletion_protectionare two new commands for managing virtual host deletion protection:# Enable deletion protection for a virtual host rabbitmqadmin vhosts enable_deletion_protection --name "production-vhost" # Disable deletion protection for a virtual host rabbitmqadmin vhosts disable_deletion_protection --name "production-vhost"
Protected virtual hosts cannot be deleted, either individually using
vhosts deleteor as part of bulk operations usingvhosts delete_multiple. To delete a protected virtual host, its protection must be lifted first.
-
Memory breakdown commands (
show memory_breakdown_in_bytesandshow memory_breakdown_in_percent) now gracefully handle cases where memory breakdown stats are not yet available on the target node -
shovel enable_tls_peer_verification_for_all_source_urisis a new command that enables TLS peer verification for all shovel source URIs:# The certificate and private key paths below refer # to the files deployed to the target RabbitMQ node(s), not to the # local files. # # As such, these arguments are command-specific and should not be confused # with the global `--tls-ca-cert-file`, `--tls-cert-file`, and `--tls-key-file` # arguments that are used by `rabbitmqadmin` itself to connect to the target node # over the HTTP API. rabbitmqadmin shovels enable_tls_peer_verification_for_all_source_uris \ --node-local-ca-certificate-bundle-path /path/to/node/local/ca_bundle.pem \ --node-local-client-certificate-file-path /path/to/node/local/client_certificate.pem \ --node-local-client-private-key-file-path /path/to/node/local/client_private_key.pem
See TLS guide and Shovel guide to learn more.
-
shovel enable_tls_peer_verification_for_all_destination_urisis a new command that enables TLS peer verification for all shovel destination URIs:# Ditto, the certificate and private key paths below refer # to the files deployed to the target RabbitMQ node(s), not to the # local files. rabbitmqadmin shovels enable_tls_peer_verification_for_all_destination_uris \ --node-local-ca-certificate-bundle-path /path/to/node/local/ca_bundle.pem \ --node-local-client-certificate-file-path /path/to/node/local/client_certificate.pem \ --node-local-client-private-key-file-path /path/to/node/local/client_private_key.pem
- RabbitMQ HTTP API client was upgraded to
0.59.0
-
federation enable_tls_peer_verification_for_all_upstreamsis a new command that enables TLS peer verification for all federation upstreams:# Note that the certificate and private key paths below refer # to the files deployed to the target RabbitMQ node(s), not to the # local files. # # As such, these arguments are command-specific and should not be confused # with the global `--tls-ca-cert-file`, `--tls-cert-file`, and `--tls-key-file` # arguments that are used by `rabbitmqadmin` itself to connect to the target node # over the HTTP API. rabbitmqadmin federation enable_tls_peer_verification_for_all_upstreams \ --node-local-ca-certificate-bundle-path /path/to/node/local/ca_bundle.pem \ --node-local-client-certificate-file-path /path/to/node/local/client_certificate.pem \ --node-local-client-private-key-file-path /path/to/node/local/client_private_key.pem
See TLS guide and Federation guide to learn more.
-
shovel disable_tls_peer_verification_for_all_source_urisis a new command that disables TLS peer verification for all shovel source URIs.Important: this command should only be used to undo incorrect shovel source URIs, after a bad deployment, for example, if peer verification was enabled before certificates and keys were deployed.
-
shovel disable_tls_peer_verification_for_all_source_urisis a new command that disables TLS peer verification for all shovel source URIs.Important: this command should only be used to undo incorrect shovel destination URIs (see above).
-
All
delete_*andclear_*commands now support the--idempotentlyflag (previously it was just a few):bindings deleteclose connectionclose user_connectionsconnections closeconnections close_of_userexchanges deleteexchanges unbindfederation delete_upstreamglobal_parameters clearoperator_policies deleteparameters clearpolicies deletequeues deleteshovels deletestreams deleteusers deletevhosts delete
-
Updated
delete_bindingto use the newBindingDeletionParamsstruct API
-
federation disable_tls_peer_verification_for_all_upstreamsis a new command that disables TLS peer verification for all federation upstreams.Important: this command should only be used to correct federation upstream URI after a bad deployment, for example, if peer verification was enabled before certificates and keys were deployed.
- RabbitMQ HTTP API client was upgraded to
0.57.0
-
definitions export_from_vhostnow supports--transformations:# previously only 'definitions export' supported --transformations rabbitmqadmin --vhost "my-vhost" definitions export_from_vhost \ --transformations prepare_for_quorum_queue_migration,drop_empty_policies \ --file "my-vhost.definitions.json"
- The
prepare_for_quorum_queue_migrationtransformation did not remove CMQ-related keys such asx-ha-modefrom optional queue arguments
- RabbitMQ HTTP API client was upgraded to
0.52.0
- RabbitMQ 4.2 forward compatibility:
shovels list_allandshovels listnow can render local shovel rows
- RabbitMQ HTTP API client was upgraded to
0.44.0
definitions exportis now compatible with RabbitMQ 3.10.0, a series that has reached end of life (EOL) in late 2023
- RabbitMQ HTTP API client was upgraded to
0.43.0
shovels listandshovels list_allpanicked when target cluster had at least one static shovel
- RabbitMQ HTTP API client was upgraded to
0.42.0
shovels list_allpanicked when one of the shovels was in theterminatedstate
shovels listis a new command that lists shovels in a particular virtual host
- RabbitMQ HTTP API client was upgraded to
0.41.0
shovels declare_amqp091panicked when the--source-exchangeargument was not provided, even if--source-queuewas
-
Improved handling of missing or impossible to load/parse
--tls-ca-cert-fileon the command line.The tool now properly handles cases where a CA certificate file path is not provided, making CA certificate loading optional rather than required, which prevents crashes when TLS is used without a custom CA certificate bundle
-
show overviewcould panic when run against a freshly booted RabbitMQ node that did not have certain metrics/rates initialized and available. Now those metrics will use the default values for their types, such as0and0.0for the counters, gauges, rates
- RabbitMQ HTTP API client was upgraded to
0.40.0
-
rabbitmqadmin.confnow supports more TLS-related settings:ca_certificate_bundle_path(corresponds to--tls-ca-cert-fileon 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.
- Tool version was unintentionally missing from
-houtput (but present in its long counterpart,--help) - The
tlssetting inrabbitmqadmin.conf, a--use-tlsequivalent, was not respected when connecting to a node in certain cases
-
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-hashwhen creating a user with theusers declarecommand. -
users declarenow 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).
-
definitions exportnow supports a new transformation:prepare_for_quorum_queue_migration.rabbitmqadmin definitions export --transformations prepare_for_quorum_queue_migration,drop_empty_policies --stdoutThis 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.
export definitionsCLI interface was unintentionally different from that ofdefinitions export. Note thatexport definitionsonly exists for better backwards compatibility withrabbitmqadminv1, usedefinitions exportwhen possible.
-
connections listfailed to deserialize a list of connections that included direct connections (as in the Erlang AMQP 0-9-1 client), namely local connections of shovels and federation links.GitHub issue: #68
- RabbitMQ HTTP API client was upgraded to
0.36.0
- RabbitMQ HTTP API client was upgraded to
0.35.0to fix aconnections listcommand panic.
-
Several
rabbitmqadmin.confsettings were not merged correctly with the command line arguments.GitHub issue: #58
connectionsis a new command group for operations on connectionschannelsis a new command group for operations on channelsoperator_policiesis a new command group for working with operator policies. It matches thepoliciesgroup but acts on operator policiespolicies setandpolicies updateare two new aliases forpolicies declare. The former follows the naming used byrabbitmqctland the latter reflects the fact that the command can be used to update an existing policy, in particular, to override its definitionpolicies patchis a new command that updates a policy definition by merging the provided definition with the existing onepolicies delete_definition_keysis a new command that removes keys from a policy definitionpolicies delete_definition_keys_from_all_inis a new command that removes definition keys from all policies in a virtual hostpolicies update_definitionis a new command that updates a policy definition key; for multi-key updates, see `policies patchpolicies update_definitions_of_all_inis a new command that updates a definition key for all policies in a virtual hostpolicies declare_overrideis a new command that declares a policy that overrides another policypolicies declare_blanketis a new command that declares a low priority policy that matches all objects not matched by any other policiesparameters list_allis a new command that lists all runtime parameters across all virtual hostsparameters list_inis a new command that lists runtime parameters of a given component (type) in a specific virtual host
bindingsis a new command group for operations on bindingsexchangesis a new command group for operations on exchangesglobal_parametersis a new command group for operations on global runtime parametersnodesis a new command group for operations on nodesparametersis a new command group for operations on runtime parametersqueuesis a new command group for operations on queuesstreamsis a new command group for operations on streamsusersis a new command group for operations on usersvhostsis a new command group for operations on virtual hosts- Command groups are now ordered alphabetically
- Both
-hand--helpnow display relevant doc guide URLs. Previously it was only the case for--help
vhosts declareno longer has a default value for--default-queue-type. Instead, the default will be controlled exclusively by RabbitMQ
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_SUBCOMMANDSRABBITMQADMIN_INFER_LONG_OPTIONS
This feature is only meant to be used interactively. For non-interactive use, it can be potentially too dangerous to allow.
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 |
-
definitions export's special--filevalue of-for "standard input" is deprecated. Use--stdoutinstead: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
-
definitions importnow supports reading definitions from the standard input instead of a file. For that, pass--stdininstead of--file "/path/to/definitions.json".rabbitmqadmin definitions import --stdin < definitions.jsoncat 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
-
New command group:
federation, seerabbitmqadmin federation help -
New command:
federation declare_upstream_for_queuesfor declaring upstreams that will exclusively be used for queue federation. This command does not support any options related to exchange federation.rabbitmqadmin federation --vhost "local.vhost" declare_upstream_for_queues \ --name "dc.vancouver" \ --uri "amqp://192.168.0.25/demote.vhost" \ --ack-mode "on-confirm"
-
New command:
federation declare_upstream_for_exchangesfor declaring upstreams that will exclusively be used exchange federation. This command does not support any options related to queue federation.rabbitmqadmin federation --vhost "local.vhost" declare_upstream_for_exchanges \ --name "dc.vancouver" \ --uri "amqp://192.168.0.25/demote.vhost" \ --ack-mode "on-confirm"
-
New command:
federation declare_upstreamfor declaring upstreams that can be used for either queue or exchange federation. This command supports the whole spectrum of federation upstream options, that is, both the settings of queue and exchange federation.rabbitmqadmin federation --vhost "local.vhost" declare_upstream \ --name "dc.canada.bc.vancouver" \ --uri "amqp://192.168.0.25/demote.vhost" \ --ack-mode "on-confirm"
-
New command:
federation list_all_upstreamsfor listing all upstreams (that is, upstreams across all the virtual hosts in the cluster).rabbitmqadmin federation list_all_upstreams
-
New command:
federation list_all_linksfor listing all links (that is, links across all the virtual hosts in the cluster).rabbitmqadmin federation list_all_links
-
New command:
federation delete_upstream. As the name suggests, it deletes an upstream.rabbitmqadmin federation delete_upstream --name "dc.canada.bc.vancouver" -
New definitions export
--transformationsvalue,obfuscate_usernames, changes usernames to dummy values (e.g. so that definitions could be shared safely with external teams) -
New definitions export
--transformationsvalue,exclude_users, removes users from the result (also for safe sharing) -
New definitions export
--transformationsvalue,exclude_permissions, removes all permissions (also for safe sharing) -
New definitions export
--transformationsvalue,exclude_runtime_parameters, removes all runtime parameters -
New definitions export
--transformationsvalue,exclude_policies, removes all policies -
New definitions export
--transformationsvalue,no_op, applies no transformation
-
definitions exportnow supports a new option,--transformations, a comma-separated list of supported operations to apply to the definitions.rabbitmqadmin definitions export --transformations strip_cmq_keys_from_policies,drop_empty_policiesThe command above applies two transformations named
strip_cmq_keys_from_policiesanddrop_empty_policiesthat will strip all classic queue mirroring-related policy keys that RabbitMQ 3.13 nodes supported, then removes the policies that did not have any keys left (ended up having an empty definition). -
When
--non-interactivemode is used, newlines in table cells are now replaced with comma-separated lists
- 'declare queue's
--typeoption values that the tool does not recognize are now passed as is to the HTTP API
-
policiesis a new command group for policy operations:rabbitmqadmin help policies # an equivalent of 'declare policy' rabbitmqadmin policies declare --name "policy-name" --pattern '^matching\..+' --apply-to "quorum_queues" \ --priority 10 \ --definition '{"max-length": 10000}' # an equivalent of 'list policies' rabbitmqadmin policies list # an equivalent of 'delete policy' rabbitmqadmin policies delete --name "policy-name"
-
policies list_inis a new command that lists policies in a specific virtual host:rabbitmqadmin --vhost "a.vhost" policies list_inrabbitmqadmin --vhost "streams.vhost" policies list_in --apply-to "streams"
-
policies list_matching_objectis a new command that lists all policies that would match an object (a queue, a stream, an exchange) with a given name:rabbitmqadmin --vhost "a.vhost" policies list_matching_object --name 'audit.events' --type queues
declare policy's--apply-toargument value was ignored
-
Binary packages for 8x86-64 Linux are now produced on an older
glibcversion,2.35, for compatibility with Debian Bookworm and Ubuntu 22.04 -
shovels declare_amqp10is a new command that declares a dynamic Shovel that will use AMQP 1.0 for both source and destination:
rabbitmqadmin --vhost "shovels" shovels declare_amqp10 \
--name "shovel-2" \
--source-uri amqp://localhost:5672 \
--destination-uri amqp://localhost:5672 \
--source-address "/queue/src.q" --destination-address "/queue/dest.q"-
shovels declare_amqp091is a new command that declares a dynamic Shovel that will use AMQP 0-9-1 for both source and destination:rabbitmqadmin --vhost "shovels" shovels declare_amqp091 \ --name "shovel-2" \ --source-uri amqp://localhost:5672 \ --destination-uri amqp://localhost:5672 \ --source-queue "src.q" --destination-exchange "amq.fanout"
-
shovels deleteis a new command that deletes a dynamic shovel:rabbitmqadmin --vhost "shovels" shovels delete --name "shovel-2"
-
definitions export_from_vhostis a new command that exports definitions from a single virtual host (as opposed to definitions for the entire cluster) -
definitions import_into_vhostis a new command that imports virtual host-specific definitions (as opposed to definitions for the entire cluster)
-
list user_connectionsis a new command that lists connections of a specific user:rabbitmqadmin --vhost="/" list user_connections --username "monitoring.1" rabbitmqadmin --vhost="production" list user_connections --username "web.45cf7dc28" -
close user_connectionsis a new command that closes connections of a specific user:rabbitmqadmin --vhost="/" close user_connections --username "monitoring.2" rabbitmqadmin --vhost="production" close user_connections --username "web.94ee67772" -
New general option
--table-style, can be used to change output table styling.By default, the following style is used:
rabbitmqadmin --table-style=modern show overview
An equivalent of
--non-interactivein terms of styling israbbitmqadmin --table-style=borderless show overview
More available styles:
rabbitmqadmin --table-style=ascii show overview
rabbitmqadmin --table-style=psql show overview
rabbitmqadmin --table-style=markdown show overview
rabbitmqadmin --table-style=dots show overview
-
tanzu sds enablewas renamed totanzu sds enable_on_node.This breaking change only applies to a command specific to Tanzu RabbitMQ 4.1, a series currently in development.
-
tanzu sds disablewas renamed totanzu sds disable_on_node.This breaking change only applies to a command specific to Tanzu RabbitMQ 4.1, a series currently in development.
-
tanzu sds enable_cluster_wideis a new command that disables SDS on all cluster nodes.This command is specific to Tanzu RabbitMQ 4.1, a series currently in development.
-
tanzu sds disable_cluster_wideis a new command that disables SDS on all cluster nodes.This command is specific to Tanzu RabbitMQ 4.1, a series currently in development.
list connectionsnow correctly handles RabbitMQ Stream Protocol connections that do not have thechannel_maxmetric set
-
declare streamis a new command that accepts stream-specific arguments:rabbitmqadmin --vhost "vh1" declare stream --name "streams.1" --expiration "8h" \ --arguments '{"x-initial-cluster-size": 3}'
-
delete streamis an alias fordelete queuethat makes more sense for environments where streams are used more often than queues:rabbitmqadmin --vhost "vh1" delete stream --name "streams.1"
-
Initial support for Tanzu RabbitMQ Schema Definition Sync (SDS).
rabbitmqadmin help tanzu sds rabbitmqadmin tanzu sds status -
Initial support for Tanzu RabbitMQ Warm Standby Replication (WSR).
rabbitmqadmin help tanzu wsr rabbitmqadmin tanzu wsr status
-
Two new commands for reasoning about target node's memory footprint:
# displays a breakdown in bytes rabbitmqadmin show memory_breakdown_in_bytes --node 'rabbit@hostname'
# displays a breakdown in percent rabbitmqadmin show memory_breakdown_in_percent --node 'rabbit@hostname'
Example output of
show memory_breakdown_in_percent:┌────────────────────────────────────────┬────────────┐ │ key │ percentage │ ├────────────────────────────────────────┼────────────┤ │ total │ 100% │ ├────────────────────────────────────────┼────────────┤ │ Binary heap │ 45.10% │ ├────────────────────────────────────────┼────────────┤ │ Allocated but unused │ 23.45% │ ├────────────────────────────────────────┼────────────┤ │ Quorum queue ETS tables │ 23.05% │ ├────────────────────────────────────────┼────────────┤ │ Other processes │ 5.32% │ ├────────────────────────────────────────┼────────────┤ │ Other (used by the runtime) │ 4.98% │ ├────────────────────────────────────────┼────────────┤ │ Code │ 4.54% │ ├────────────────────────────────────────┼────────────┤ │ Client connections: others processes │ 3.64% │ ├────────────────────────────────────────┼────────────┤ │ Management stats database │ 3.48% │ ├────────────────────────────────────────┼────────────┤ │ Client connections: reader processes │ 3.22% │ ├────────────────────────────────────────┼────────────┤ │ Plugins and their data │ 3.12% │ ├────────────────────────────────────────┼────────────┤ │ Other (ETS tables) │ 1.55% │ ├────────────────────────────────────────┼────────────┤ │ Metrics data │ 0.66% │ ├────────────────────────────────────────┼────────────┤ │ AMQP 0-9-1 channels │ 0.40% │ ├────────────────────────────────────────┼────────────┤ │ Message store indices │ 0.27% │ ├────────────────────────────────────────┼────────────┤ │ Atom table │ 0.24% │ ├────────────────────────────────────────┼────────────┤ │ Client connections: writer processes │ 0.19% │ ├────────────────────────────────────────┼────────────┤ │ Quorum queue replica processes │ 0.10% │ ├────────────────────────────────────────┼────────────┤ │ Stream replica processes │ 0.07% │ ├────────────────────────────────────────┼────────────┤ │ Mnesia │ 0.02% │ ├────────────────────────────────────────┼────────────┤ │ Metadata store │ 0.02% │ ├────────────────────────────────────────┼────────────┤ │ Stream coordinator processes │ 0.02% │ ├────────────────────────────────────────┼────────────┤ │ Classic queue processes │ 0.00% │ ├────────────────────────────────────────┼────────────┤ │ Metadata store ETS tables │ 0.00% │ ├────────────────────────────────────────┼────────────┤ │ Stream replica reader processes │ 0.00% │ ├────────────────────────────────────────┼────────────┤ │ Reserved by the kernel but unallocated │ 0.00% │ └────────────────────────────────────────┴────────────┘Note that there are two different supported strategies for computing memory footprint of a node. RabbitMQ uses both and takes the greater value for 100% when computing the relative share in percent for each category. Other factors that can affect the precision of percentage values reported are runtime allocator behavior nuances and the kernel page cache.
-
Client identity support:
--tls-cert-fileand--tls-key-fileare the (re-introduced) options that allow the user to pass in a public certificate (key) and private key pair for x.509 peer verification:rabbitmqadmin --use-tls --host 'target.domain' --port 15671 \ --tls-ca-cert-file '/path/to/ca_certificate.pem' \ --tls-cert-file '/path/to/client_certificate.pem' \ --tls-key-file '/path/to/client_key.pem' \ list connections
GitHub issue: #26
-
Initial cross-platform support for loading of trusted CA certificates from system locations.
This behavior is enabled automatically. The certificates in a PEM file passed in via
--tls-ca-cert-fileare merged with the list of CA certificates discovered in the platform-specific stores.GitHub issue: #42
-
rabbitmqadmin show memory_breakdownis a new command that outputs a breakdown of target node's memory footprint
-
New health checks:
# To see help: 'rabbitmqadmin health_check help port_listener' rabbitmqadmin health_check port_listener --port [port]# To see help: 'rabbitmqadmin health_check help protocol_listener' rabbitmqadmin health_check protoocl_listener --protocol [protocol]
-
rabbitmqadmin feature_flags list(also available asrabbitmqadmin list feature_flags) is a new command that lists feature flags and their cluster state.GitHub issue: #38
-
rabbitmqadmin feature_flags enable --name {feature flag}andrabbitmqadmin feature_flags enable_allare new commands that enable feature flags.Just like its
rabbitmqctlcounterpart,rabbitmqadmin feature_flags enable_allwill only enable the stable feature flags and will skip the experimental ones.GitHub issues: #41
-
rabbitmqadmin deprecated_features list(also available asrabbitmqadmin list deprecated_features) is a new function that lists all deprecated features.GitHub issue: #39
-
rabbitmqadmin deprecated_features list_used(also available asrabbitmqadmin list deprecated_features_in_use) is a new function that lists the deprecated features that are found to be used in the cluster.GitHub issue: #40
-
Improved error reporting.
A failed HTTP API request now prints the request URL (this does NOT include the credentials), and the response body, making it easier to identify the problem without consulting RabbitMQ node logs.
-
CLI interface
helpmessage polishing.More commands now provide links to the relevant documentation guides, use (a reasonable amount of) coloring and recommend against features such as that are polling message consumption that were never designed or intended to be used in production
-
README documentation improvements
- Multi-word command line flags now use the more common
--snake-case[=]{value}format instead ofrabbitmqadminv1'slower_case={value}.
-
New command category:
health_checkwhich provides access to the health check endpoints.Currently, only the three (arguably) most important health checks are implemented:
local_alarms,cluster_wide_alarms, andnode_is_quorum_critical. -
health_check helpnow includes a link to the respective RabbitMQ documentation guide.
- Configuration paths with a tilda (
~), including the default configuration file at~/.rabbitmqadmin.conf, were not loaded correctly.
-
Several key
deletecommands, namelydelete vhost,delete user,delete queueanddelete exchangenow support a new flag,--idempotently. When this flag is used, 404 Not Found responses from the HTTPGitHub issue: #32
-
--non-interactiveis a new global flag. When used, this flag will instructrabbitmqadminto not produce table border formatting, and generally try to use output that'd be easier to consume from scripts -
Initial work on improving error reporting
declare exchangeproduced an incorrect API request payload when target exchange--typewas anx-*type (a plugin provided-type), such asx-local-randomorx-consistent-hash
-
Implement support for configuration files. Instead of
.inifiles used byrabbitmqadminv1, this version uses TOML.GitHub issue: #28
-
Implement
show overviewGitHub issue: #25
-
declare queueno longer requires a--queue-type. If not type is specified, it will not be included into the request and the queue will be declared with the default queue type of the target virtual host.GitHub issue: #29
Release artifacts are no longer distributed as single file archives. Instead, the release now includes "naked" binaries that can be downloaded and executed without un-archiving.
GitHub issue: #31