Skip to content

Latest commit

 

History

History
961 lines (564 loc) · 34.8 KB

File metadata and controls

961 lines (564 loc) · 34.8 KB

Rust Client for the RabbitMQ HTTP API Change Log

v0.89.0 (unreleased)

No changes yet.

v0.88.0 (May 1, 2026)

Breaking Changes

  • responses::OAuthConfiguration and Client#oauth_configuration were removed because the endpoint they were relying on is no longer available in RabbitMQ 4.3.0

    In earlier versions the endpoint hasn't been used by RabbitMQ's management UI since 3.11.0

Enhancements

  • QueueInfo#operator_policy and QueueInfo#effective_policy_definition are new functions that expose a couple of new-ish queue metrics to this client

Bug Fixes

  • Fixes propagation of x-max-age, x-max-length-bytes, x-stream-max-segment-size-bytes arguments upon stream declaration

  • Compilation with default feature set was broken due to a feature-conditional use

v0.87.0 (Apr 7, 2026)

Enhancements

  • ExchangeType now covers the non-standard exchange types shipped with RabbitMQ core or Tanzu RabbitMQ: ConsistentHashing, ModulusHash, Random, LocalRandom, JmsTopic, RecentHistory, DelayedMessage, MessageDeduplication, plus a Plugin(String) catch-all for arbitrary plugin exchange types
  • ExchangeType::ModulusHash is a new value for the x-modulus-hash exchange, which is included into RabbitMQ core as of 4.3.0 (previously it was a part of the rabbitmq-sharding plugin)

v0.86.0 (Mar 20, 2026)

Enhancements

  • HttpClientError Display messages now include the underlying error details for RequestError, InvalidHeaderValue, IncompatibleBody, and EndpointValidationError::ClientBuildError

v0.85.0 (Mar 16, 2026)

Dependencies

  • reqwest upgraded to 0.13.2

v0.84.0 (Mar 7, 2026)

Enhancements

v0.83.0 (Feb 20, 2026)

Enhancements

  • A new feature, zeroize, together with a new type, Password, that offers zeroisation for the most security-demanding use cases

v0.82.0 (Feb 20, 2026)

Breaking Changes

  • SSRF hardening: ClientBuilder#build now returns Result<Client, EndpointValidationError> and rejects endpoints that do not use an http or https scheme

Enhancements

  • ClientBuilder#with_redirect_policy controls the HTTP redirect policy. with_recommended_defaults now also disables redirects
  • EndpointValidationError and RedirectPolicy are re-exported from both api and blocking_api

v0.81.0 (Feb 17, 2026)

Enhancements

  • ClusterNode#rabbitmq_version now takes the version straight from the GET /api/nodes or GET /api/nodes/{name} responses, if available (starting with RabbitMQ 4.2.4). The function falls back to the rabbit Erlang/OTP application version on older nodes
  • ClusterNode gained a few new optional fields available since RabbitMQ 4.2.4: erlang_version, erlang_full_version, crypto_lib_version
  • Overview#crypto_lib_version is a new field reporting the crypto library (such as OpenSSL, LibreSSL) version used by the node's runtime. Only provided by RabbitMQ 4.2.4 and later versions.

v0.80.0 (Feb 13, 2026)

Enhancements

  • New HttpClientError helpers for "transport-level" connection error classification: is_connection_error, is_timeout, is_tls_handshake_error, as_reqwest_error
  • Client#probe_reachability tests whether the node is reachable and the configured credentials are accepted. Returns a ReachabilityProbeOutcome enum rather than a Result because both outcomes are expected, so using the ? operator would be semantically wrong
  • Improved TagList ergonomics with can_access_http_api, is_administrator, can_access_monitoring_endpoints
  • TagList now implements From<Vec<String>>
  • ClientBuilder#with_connect_timeout sets the TCP connection timeout independently of the overall request timeout

v0.79.0 (Feb 11, 2026)

Enhancements

  • responses::Listener#human_friendly_name is a new method that returns a human-friendly name for the listener: for example, "MQTT over WebSockets with TLS" for https/web-mqtt (a cryptic internal listener name)

v0.78.0 (Feb 10, 2026)

Enhancements

  • Introduce ClusterNode#rabbitmq_version that relies on the Erlang/OTP application version. Yeah, the HTTP API could lend us a hand here but so far hasn't.

v0.77.0 (Feb 5, 2026)

Enhancements

  • Documentation improvements

Dependencies

  • regex bumped to 1.12
  • tokio bumped to 1.49
  • percent-encoding bumped to 2.3

v0.76.0 (Jan 16, 2026)

Enhancements

  • Amqp091ShovelParams no longer serializes src-predeclared, dest-predeclared when those keys are false for RabbitMQ 3.12.x compatibility

v0.75.0 (Jan 16, 2026)

Breaking Changes

  • ExchangeFederationParams#queue_type and OwnedExchangeFederationParams#queue_type are now optional (Option<QueueType> instead of QueueType) for RabbitMQ 3.12.x compatibility.

    The queue-type parameter was introduced in the 3.13 series.

  • NodeMemoryBreakdown#other_ets_tables is now i64 instead of u64 because it can be reported as negative due to an ETS table memory accounting peculiarity in RabbitMQ before 4.2.3.

v0.73.0 (Dec 30, 2025)

Dependencies

  • reqwest upgraded to 0.13.1

v0.72.0 (Dec 22, 2025)

Enhancements

  • New RuntimeParameter predicates: is_shovel, is_federation_upstream, is_federation_upstream_set, is_federation, is_policy, is_operator_policy, is_vhost_limits

v0.71.0 (Dec 13, 2025)

Enhancements

  • ClientBuilder#with_recommended_defaults applies sensible defaults: 60s request timeout, 3 retries with 1s delay
  • HttpClientError now has helper methods: is_not_found, is_already_exists, is_unauthorized, is_forbidden, is_client_error, is_server_error, status_code, url, error_details
  • New policies-related functions: Client#list_policies_for_target, Client#list_operator_policies_for_target, Client#list_matching_policies, Client#list_matching_operator_policies
  • OptionalQueueArgument is a new enum for type-safe optional queue arguments
  • XArgumentsBuilder#with_argument accepts OptionalQueueArgument directly
  • Amqp091ShovelSourceEndpoint, Amqp091ShovelDestinationEndpoint make type-safe shovel endpoint configuration easier
  • Owned variants of param types: OwnedQueueParams, OwnedExchangeParams, OwnedPolicyParams, OwnedUserParams, OwnedAmqp091ShovelSourceEndpoint, OwnedAmqp091ShovelDestinationEndpoint
  • The library has accumulated two OverflowBehavior implementations; they were folded into the common version and re-exported from the requests module

v0.70.0 (Dec 11, 2025)

Bug Fixes

  • SupportedProtocol::from now correctly maps https/web-amqp to AMQPOverWebSocketsWithTLS

Enhancements

  • PaginationParams constructors now clamp values exceeding MAX_PAGE_SIZE instead of panicking
  • New convenience methods for listing queues by type: Client#list_quorum_queues, Client#list_quorum_queues_in, Client#list_classic_queues, Client#list_classic_queues_in, Client#list_streams, Client#list_streams_in
  • Client#delete_queues for batch queue deletion
  • VirtualHostParamsBuilder for fluent virtual host parameter construction
  • UserParams#policymaker convenience constructor

v0.69.0 (Dec 11, 2025)

Enhancements

  • Support for pagination with Client#list_connections_paged, Client#list_queues_paged, Client#list_queues_in_paged, PaginationParams
  • API ergonomics improvements: XArgumentsBuilder, PolicyDefinitionBuilder, HttpClientError#user_message, PolicyParams improvements, and a few more convenience methods on Client

v0.68.0 (Nov 28, 2025)

Enhancements

  • Improve tabled column names for AuthenticationAttemptStatistics.

v0.67.0 (Nov 28, 2025)

Bug Fixes

  • Add two more aliases to SupportedProtocol::AMQP for the authentication attempts statistics endpoint.

v0.66.0 (Oct 17, 2025)

Enhancements

  • Request errors now include the error and reason fields populated if the API response contains them

v0.65.0 (Oct 11, 2025)

Enhancements

  • Overview#has_jit_enabled is a new method that returns true if the Erlang runtime has the JIT enabled

v0.64.0 (Oct 9, 2025)

Bug Fixes

  • Reintroduced QueueOps#has_queue_ttl_arg, which was unintentionally lost during a refactoring

v0.63.0 (Oct 9, 2025)

Bug Fixes

  • Reintroduced QueueOps#is_server_named, which was unintentionally lost during a refactoring

v0.62.0 (Oct 9, 2025)

Enhancements

  • Client#list_all_cluster_plugins is a new function that returns a combined set of plugins enabled across all cluster nodes
  • Client#list_node_plugins is a new function that returns the list of plugins enabled on a specific node

v0.61.0 (Oct 8, 2025)

Enhancements

  • Logging via the log crate. Both clients now emit trace-level logs for HTTP operations, including request/response details and retry attempts.

  • HTTP request timeout support. Both ClientBuilder implementations now provide a with_request_timeout method for configuring request timeouts:

    use std::time::Duration;
    use rabbitmq_http_client::api::ClientBuilder;
    
    let client = ClientBuilder::new()
        .with_endpoint("http://localhost:15672/api")
        .with_basic_auth_credentials("user", "pass")
        .with_request_timeout(Duration::from_secs(30))
        .build();

    The timeout applies to the entire request/response cycle. If a request takes longer than the configured duration, it will be aborted and return a timeout error.

    Note that this new setting is ignored if a custom HTTP client is provided via ClientBuilder#with_client. In that case, configure the timeout directly on the custom client instead.

v0.60.0 (Sep 28, 2025)

Enhancements

  • HTTP request retry support. Both ClientBuilder implementations now allow for minimalistic retry behavior configuration: the number of retry attempts and the fixed delay between them.

    use rabbitmq_http_client::api::{ClientBuilder, RetrySettings};
    
    let client = ClientBuilder::new()
        .with_endpoint("http://localhost:15672/api")
        .with_basic_auth_credentials("user", "pass")
        .with_retry_settings(RetrySettings {
            // 2 retry attempts (+ 1 initial = 3 total attempts)
            max_attempts: 2,
            // a fixed wait of 500 ms between retries
            delay_ms: 500,
        })
        .build();

v0.59.0 (Sep 26, 2025)

Enhancements

  • NodeMemoryFootprint#breakdown is now an Option<NodeMemoryBreakdown> to handle cases where the node memory breakdown stats are not yet available.

Bug Fixes

  • NodeMemoryTotals#max now correctly compares all three memory totals (RSS, allocated, and used by runtime) instead of comparing RSS twice.

v0.58.0 (Sep 23, 2025)

Breaking Changes

  • All delete_* and clear_* functions now accept an idempotently boolean argument, making it possible to issue idempotent deletion requests that would not fail with a 404 Not Found response.

    This affects the following functions:

    • delete_federation_upstream
    • delete_policy
    • delete_operator_policy
    • close_connection
    • close_user_connections
    • delete_binding
    • clear_topic_permissions
    • delete_shovel
    • clear_runtime_parameter
  • delete_binding now accepts a requests::BindingDeletionParams struct instead of a long list of arguments.

Enhancements

  • All delete_* functions now support idempotent operations.

v0.57.0 (Sep 22, 2025)

Enhancements

  • responses::Shovel can now be converted to requests::RuntimeParameterDefinition, for example, when a shovel needs to be updated

v0.56.0 (Sep 21, 2025)

Module Organization

  • crate::api was split into multiple smaller modules, crate::api::*. Re-exports are provided for backwards compatibility.
  • Similarly, crate::blocking_api was split into multiple smaller modules, crate::blocking_api::*, with re-exports in place.
  • Similarly, crate::requests was split into multiple smaller modules, crate::requests::*.
  • crate::requests was split into multiple smaller modules, crate::requests::*.
  • Similarly, crate::responses was split into multiple smaller modules, crate::responses::*, with re-exports in place.

v0.55.0 (Sep 20, 2025)

Enhancements

  • Optimized uris::UriBuilder for updates of multiple query parameters

Bug Fixes

  • Fix several uris::UriBuilder bugs around query parameter updates

v0.54.0 (Sep 19, 2025)

Enhancements

  • FederationUpstream and FederationUpstreamParams no longer have a "fidelity gap," a difference between fields that had made it impossible to convert the former into the latter
  • FederationUpstream now includes several missing (rarely used) fields such as bind_using_nowait, channel_use_mode

Breaking Changes

  • FederationUpstream#prefetch_count and FederationUpstream#reconnect_delay were bumped to u32

v0.53.0 (Sep 18, 2025)

Enhancements

  • uris::UriBuilder is a convenient way of modifying URIs used by federation upstreams and shovels. Its replace and merge methods are now much more efficient as they no longer rebuild the URI query string multiple times.

    use rabbitmq_http_client::uris::UriBuilder;
    use rabbitmq_http_client::commons::TlsPeerVerificationMode;
    
    let uri = UriBuilder::new("amqps://user:pass@localhost:5671/vhost")
        .unwrap()
        .with_tls_peer_verification(TlsPeerVerificationMode::Enabled)
        .with_ca_cert_file("/path/to/ca_bundle.pem")
        .build()
        .unwrap();
  • uris::TlsClientSettings makes it possible to group TLS settings and apply them to a uris::UriBuilder in one go.

    use rabbitmq_http_client::uris::{TlsClientSettings, UriBuilder};
    use rabbitmq_http_client::commons::TlsPeerVerificationMode;
    
    let settings = TlsClientSettings::new()
         .peer_verification(TlsPeerVerificationMode::Enabled)
         .ca_cert_file("/path/to/ca_bundle.pem");
    
    let uri = UriBuilder::new("amqps://user:pass@localhost:5671/vhost?verify=verify_none")
        .unwrap()
        .replace(settings)
        .build()
        .unwrap();
  • commons::TlsPeerVerificationMode is a new enum representing TLS peer verification modes

  • commons::TLS_PEER_VERIFICATION_KEY is a new constant for the verify key used by federation and shovel URIs, and more

v0.52.0 (Sep 17, 2025)

Enhancements

  • VirtualHostDefinitionSetTransformer trait and VirtualHostTransformationChain for transforming virtual host-specific definition sets
  • Virtual host equivalents of cluster-wide transformers: PrepareForQuorumQueueMigrationVhost, StripCmqKeysFromVhostPolicies, DropEmptyVhostPolicies
  • PrepareForQuorumQueueMigration and PrepareForQuorumQueueMigrationVhost transformers now also strip CMQ-related x-arguments (such as x-ha-mode) from queues definitions, as they won't pass validation on RabbitMQ 4.x

v0.51.0 (Sep 16, 2025)

Enhancements

  • responses::TagList, responses::PluginList, responses::XArguments, responses::NodeList, responses::MessageList,responses::FeatureFlagList, responses::DeprecatedFeatureList now all implement Deref and DerefMut
  • responses::Channel#state now uses an enum, responses::ChannelState, instead of a string.
  • Client#enable_vhost_deletion_protection protects a virtual host from deletion (using the POST /api/vhosts/{vhost}/deletion/protection endpoint).
  • Client#disable_vhost_deletion_protection lifts deletion protection (using the DELETE /api/vhosts/{vhost}/deletion/protection endpoint).
  • Client#auth_attempts_statistics is a new function providing support for the GET /api/auth/attempts/{node} endpoint.
  • Client#list_topic_permissions is a new function that provides support for the GET /api/topic-permissions endpoint.
  • Client#list_topic_permissions_in is a new function that provides support for the GET /api/vhosts/{vhost}/topic-permissions endpoint.
  • Client#get_topic_permissions_of is a new function that provides support for the GET /api/topic-permissions/{vhost}/{user} endpoint.
  • Client#list_channels_on is a new function that provides support for the GET /api/connections/{connection}/channels endpoint.
  • Client#get_channel_info returns information about a specific channel.
  • Client#current_user is a new function providing support for the GET /api/whoami endpoint.

Bug Fixes

  • Client#delete_binding could panic if the optional x-arguments value was passed in as None
  • api::Client#enable_schema_definition_sync_on_node was unintentionally named enable_schema_definition_sync_one_node

v0.50.0 (Sep 13, 2025)

Breaking Changes

  • blocking_api::Client#enable_schema_definition_sync, blocking_api::Client#disable_schema_definition_sync were removed in favor of blocking_api::Client#enable_schema_definition_sync_on_node and blocking_api::Client#disable_schema_definition_sync_on_node that accept an Option<&str> for name, like in api::Client. None means "on all cluster nodes."

Enhancements

  • Adopted a few type aliases: common::Username, common::VirtualHostName, common::PermissionPattern, common::ChannelId.
  • responses::TagList, responses::PluginList, responses::NodeList, responses::FeatureFlagList, responses::DeprecatedFeatureList now implement contains.

v0.49.0 (Sep 07, 2025)

Enhancements

  • responses::TagList, responses::PluginList, responses::FeatureFlagList, responses::DeprecatedFeatureList, responses::MessageList now all have len and is_empty methods.
  • responses::TagList, responses::PluginList, responses::NodeList, responses::FeatureFlagList, responses::DeprecatedFeatureList, responses::MessageList now all implement IntoIterator.

v0.48.0 (Sep 07, 2025)

  • responses::NodeList#len is now properly accompanied by responses::NodeList#is_empty.

v0.47.0 (Sep 07, 2025)

Enhancements

  • responses::ClusterIdentity now implements ToString, From<String>, and From<&str>.
  • responses::NodeList#len is a new function that returns the length of the list.

v0.46.0 (Sep 06, 2025)

Enhancements

  • QueueOps#x_arguments: returns the optional arguments of an object (XArguments).
  • QueueOps#has_queue_ttl_arg: returns true if optional arguments of an object include a queue TTL argument ("x-expires").
  • QueueOps#has_message_ttl_arg: returns true if optional arguments of an object include a message TTL argument ("x-message-ttl").
  • QueueOps#has_length_limit_in_messages: returns true if optional arguments of an object include a queue length limit in messages ("x-max-length").
  • QueueOps#has_length_limit_in_bytes: returns true if optional arguments of an object include a queue length limit in bytes ("x-max-length-bytes").
  • QueueOps#is_server_named: returns true if an object's name suggests it is a server-named (system) entity.

v0.45.0 (Sep 01, 2025)

Enhancements

  • New struct, requests::TopicPermissions, for declaring topic permissions.
  • New struct, responses::TopicPermission for representing topic permissions.
  • Client#list_topic_permissions_of is a new function that lists topic permissions of a user.
  • Client#grant_permissions is now an alias for Client#declare_permissions, providing an easier to remember alias.
  • Client#declare_topic_permissions is a new function that sets topic permissions for a user
  • Client#clear_topic_permissions is a new function to clear topic permissions for a user.

v0.44.0 (Aug 25, 2025)

Enhancements

  • responses::MessagingProtocol was updated to include a new variant, MessagingProtocol::Local, that represents a "protocol" used by local shovels in RabbitMQ 4.2.0 and later.

v0.43.0 (Aug 19, 2025)

Enhancements

  • responses::VirtualHost#metadata is now optional. It was introduced in RabbitMQ 3.8.0 in 2019 but for various reasons can be missing in versions up to 3.11.0 or so.

    This can be considered a RabbitMQ 3.10.x (that reached EOL in late 2023) compatibility fix. Responsible adults don't run EOL versions of RabbitMQ, of course.

v0.42.0 (Aug 14, 2025)

Bug Fixes

  • responses::Shovel.vhost is now an option because this field will be missing for static shovels.

v0.41.0 (Aug 11, 2025)

Enhancements

  • Client#list_shovels_in is a new function that returns a list of shovels in a specific virtual host
  • ShovelState now includes one more state, ShovelState::Terminated

v0.40.0 (Jul 17, 2025)

Enhancements

  • Several structs in responses now implement Default, in particular for deserialization, and can handle the cases with certain metrics missing at request time on a freshly booted RabbitMQ node

v0.39.0 (Jul 14, 2025)

Enhancements

  • Support for a new deprecated feature flag state column, introduced in rabbitmq/rabbitmq-server#14227
  • Client#declare_policies and Client#declare_operator_policies are two new helper functions for declaring multiple policies at once. Note that both functions will still issue the same number of API requests, so it only exists for convenience
  • Client#delete_policies_in and Client#delete_operator_policies_in are two new helper functions for deleting multiple policies at once. Note that both functions will still issue the same number of API requests, so it only exists for convenience

v0.38.0 (Jul 11, 2025)

Enhancements

  • Introduce password_hashing::HashingAlgorithm with two variants, SHA-256 and SHA-512
  • Support for SHA-512 hashing of salted passwords

v0.37.0 (Jul 11, 2025)

Breaking Changes

  • responses::PolicyDefinitionOps was extended and renamed to responses::OptionalArgumentSourceOps

Enhancements

  • New DefinitionSetTransformer: PrepareForQuorumQueueMigration.

    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.

  • responses::OptionalArgumentSourceOps now supports more operations on optional queue arguments of responses::QueueDefinition as well as policy definitions (responses::PolicyDefinition, responses::Policy)

v0.36.0 (Jul 4, 2025)

Enhancements

  • responses::Connection can now represent direct connections, a special kind of connections supported by the Erlang AMQP 0-9-1 client, that shovels and federation links use when connecting to the local node.

    GitHub issues: rabbitmq/rabbitmqadmin-ng#68, #61

v0.35.0 (Jun 28, 2025)

Enhancements

  • ClientCapabilities fields now default to false when not provided in the API response.

    GitHub issue: #56.

v0.34.0 (Jun 12, 2025)

Upgrades

  • tabled was upgraded to 0.20.0

v0.33.0 (Jun 10, 2025)

Bug Fixes

  • NoActiveProtocolListenerDetails was split into NoActiveProtocolListenerDetailsPre41 and NoActiveProtocolListenerDetails41AndLater to support GET /api/health/checks/protocol-listener/{protocols} responses of both RabbitMQ 4.0.x and 4.1.x.

    Relevant RabbitMQ change: rabbitmq/rabbitmq-server#13871.

v0.32.0 (Jun 6, 2025)

Enhancements

  • Minor helper functions, such as Policy#with_overrides and PolicyDefinition#merge

v0.31.0 (May 16, 2025)

Enhancements

  • PolicyDefinition#insert and Policy#insert_definition_key are new functions for adding or updating policy definition key-value pairs

  • responses::Policy can now be converted to requests::PolicyParams for easier policy definition updates

  • More flexible use of optional reqwest features.

    Contributed by @ikrivosheev.

    GitHub issue: #53.

v0.30.0 (May 6, 2025)

Enhancements

  • Client#list_global_runtime_parameters, Client#get_global_runtime_parameter, Client#upsert_global_runtime_parameter, Client#clear_global_runtime_parameter are new functions for working with global runtime parameters
  • Client#get_cluster_tags, Client#set_cluster_tags, Client#clear_cluster_tags are new functions for operations on cluster tags

v0.29.0 (Apr 14, 2025)

Breaking Changes

  • PolicyDefinition and specifically requests::PolicyParams.definition is now a Map<String, Value> and not an Option<Map<String, Value>>. When creating a policy, the definition cannot be missing or blank, or else it would not pass server validation.

v0.28.0 (Mar 23, 2025)

Enhancements

  • Federation support. Key API elements: FederationUpstreamParams, QueueFederationParams, ExchangeFederationParams, FederationUpstream, FederationLink, Client#declare_federation_upstream_with_parameters, Client#declare_federation_upstream, Client#delete_federation_upstream, Client#list_federation_upstreams, Client#list_federation_links

  • New definition set transformations that include certain parts of the definition set: exclude_users, exclude_permissions, exclude_runtime_parameters, exclude_policies

v0.27.0 (Mar 11, 2025)

Enhancements

  • ClusterDefinitionSet transformations are maturing.

    There are two transformations::DefinitionSetTransformers available: one that removes the 3.13.x era policy queues related to classic queue mirroring, and another that removes policies with empty definitions.

    The two are supposed to be used together.

v0.26.0 (Mar 10, 2025)

Enhancements

  • ClientBuilder<E, U, P> now has a default type parameter value.

    Contributed by @ikrivosheev.

    GitHub issue: #46

  • QueueOps, NamedPolicyTargetObject are two new traits that allow key queue properties to be accessed on several structs that semantically represent a queue, either directly or in an exported set of definitions

  • QueueType::Unsupported(String) is a new queue type variant

  • Initial functions for mutating certain parts of ClusterDefinitionSets

v0.25.0 (Mar 3, 2025)

Enhancements

  • PolicyTarget#does_apply_to is a new function that allows for PolicyTarget equivalence comparison. For example, PolicyTarget::QuorumQueues is a subset of PolicyTarget::Queues but PolicyTarget::QuorumQueues is not

v0.24.0 (Mar 2, 2025)

Enhancements

  • Client#declare_amqp10_shovel is a new function that declares a dynamic shovel where both source and destination use AMQP 1.0

  • Both Amqp091ShovelSourceParams and Amqp091ShovelDestinationParams now support a new boolean option, predeclared, that enables either or both sides to rely on a pre-declared topology

v0.23.0 (Feb 24, 2025)

Breaking Changes

  • RuntimeParameterDefinition#name, RuntimeParameterDefinition#vhost, and RuntimeParameterDefinition#component types changed from String to &str

Enhancements

  • Client#declare_amqp091_shovel is a new function that declares a dynamic shovel where both source and destination use AMQP 0-9-1

  • Client#delete_shovel is a new function for deleting shovels

v0.22.0 (Feb 8, 2025)

Enhancements

  • Client#import_vhost_definitions is a new function that imports virtual host-specific definition files (as opposed to cluster-wide ones) into the target virtual host

  • Client#import_cluster_wide_definitions is an alias to Client#import_definitions to better reflect what it does

v0.21.0 (Feb 8, 2025)

Enhancements

  • responses::VirtualHostDefinitionSet is an equivalent of responses::ClusterDefinitionSet but adapted for the specifics of virtual host-specific definitions, namely the fact that they do not contain virtual hosts, users, or permissions, and objects such as queues or bindings do not have the virtual host field to make it possible to import them into a virtual host with any name

  • Client#export_vhost_definitions, Client#export_vhost_definitions_as_string and Client#export_vhost_definitions_as_data are new functions that export virtual host-specific definitions (as opposed to cluster-wide ones)

Breaking Changes

  • responses::DefinitionSet was renamed to responses::ClusterDefinitionSet to differentiate it from virtual host-specific definitions, which are from now on represented by responses::VirtualHostDefinitionSet

  • Client#export_definitions was renamed to Client#export_cluster_wide_definitions

  • Client#export_definitions_as_string was renamed to Client#export_cluster_wide_definitions_as_string

  • Client#export_definitions_as_data was renamed to Client#export_cluster_wide_definitions_as_data

v0.20.0 (Feb 2, 2025)

Enhancements

  • Client#close_user_connections is a new function that closes all connections that authenticated with a specific username

v0.19.0 (Feb 1, 2025)

Refactoring

  • Client#disable_schema_definition_sync was renamed to Client#disable_schema_definition_sync_on_node.

    This breaking change only applies to a function specific to Tanzu RabbitMQ 4.1, a series currently in development.

  • Client#enable_schema_definition_sync was renamed to Client#enable_schema_definition_sync_on_node.

    This breaking change only applies to a function specific to Tanzu RabbitMQ 4.1, a series currently in development.

Enhancements

  • Client#disable_schema_definition_sync now disables SDS on all cluster nodes.

    This function is specific to Tanzu RabbitMQ 4.1, a series currently in development.

  • Client#enable_schema_definition_sync now enables SDS on all cluster nodes.

    This function is specific to Tanzu RabbitMQ 4.1, a series currently in development.

v0.18.0 (Feb 1, 2025)

Bug Fixes

  • responses::Connection#channel_max is now an Option<u16> because this metric won't be available for, say, RabbitMQ Stream Protocol connections

Enhancements

  • New convenience functions for working with streams: Client#get_stream_info, Client#delete_stream

  • Client#declare_stream and requests::StreamParams for convenient stream declaration

v0.17.0 (Jan 27, 2025)

Enhancements

  • Initial support for Tanzu RabbitMQ Schema Definitions Sync (SDS) operations.

  • Initial support for Tanzu RabbitMQ Warm Standby Replication (WSR) operations.

  • Isolated test suite runs for each client.

    To run only the async client tests, use

    cargo test async --all-features

    To run only the blocking client tests, use

    cargo test blocking --all-features

Bug Fixes

  • Async Client#delete_* functions now correctly handle NotFound responses for idempotent deletes

v0.16.0 (Jan 15, 2025)

Bug Fixes

  • api::Client now computes API endpoint paths correctly (a slash was missing)

v0.15.0 (Jan 5, 2025)

Enhancements

  • Client#get_node_memory_footprint is a new function that returns a node memory footprint breakdown. responses::NodeMemoryFootprint and responses::NodeMemoryBreakdown are the key types that provide access to per-category proportions, both absolute and relative (in percent)

v0.14.0 (Dec 31, 2024)

Enhancements

  • New responses::HealthCheckFailureDetails variants to accommodate active port and protocol listener health checks

  • New health check function: Client#health_check_protocol_listener

v0.13.0 (Dec 31, 2024)

Enhancements

  • New functions for listing stream connections, publishers and consumers: Client#list_stream_publishers, Client#list_stream_publishers_in, Client#list_stream_publishers_of, Client#list_stream_publishers_on_connection, Client#list_stream_consumers, Client#list_stream_consumers_in, Client#list_stream_consumers_on_connection, Client#list_stream_connections, Client#list_stream_connections_in

  • New health check function: Client#health_check_port_listener

v0.12.0 (Dec 28, 2024)

Enhancements

  • Client#list_feature_flags, Client#enable_feature_flag, Client#enable_all_stable_feature_flags are three new functions for working with feature flags

v0.11.0 (Dec 28, 2024)

Enhancements

  • Client#list_all_deprecated_features and Client#list_deprecated_features_in_use are new functions for listing all deprecated features and only those whose use is detected in the cluster.

  • Client#list_feature_flags is a new function that lists all feature flags in the cluster, including their state and stability.

v0.10.0 (Dec 27, 2024)

Dependencies

  • Bumps minimum reqwest version to 0.12.11

v0.9.0 (Dec 24, 2024)

Breaking Changes

  • To propagate more request context to the caller, crate::error::Error was updated to provide a request URL, a header map, and a request body (if available).

    This reason for doing this comes down to how reqwest's Response functions are designed: the ones that consume and parse the body also consume self, which means propagating a Response to the caller is not very useful at best, and arguably is misleading.

Enhancements

  • crate::api now provides an async API. crate::blocking_api provides the original synchronous API.

    Contributed by @ikrivosheev.

    GitHub issues: #29, #30

  • Client#overview is a new function that corresponds to the GET /api/overview API endpoint.

    Contributed by @ikrivosheev.

    GitHub issue: #31