No changes yet.
This release adopts a new major version of Faraday and targets
only community supported RabbitMQ versions,
which at this time means 3.13.x
.
While there are no major breaking changes in the library itself, these two changes and more than two years that have passed since 2.0.0 warrant a major version bump.
Contributed by @shashankmehra.
GitHub issue: #63
Contributed by @shashankmehra.
GitHub issue: #62
Test suite and CI automation changes.
GitHub issue: #52
Contributed by @bagedevimo.
GitHub issue: #57
Faraday (a dependency) has been upgraded to 1.2.x
to eliminate some deprecation warnings.
RabbitMQ::HTTP::Client#aliveness_test
has been removed. The endpoint has been deprecated
in favor of more focussed health check endpoints:
c = RabbitMQ::HTTP::Client.new("http://username:s3kRe7@localhost:15672")
# Returns a pair of [success, details]. Details will be nil
# if the check succeeds.
#
# Checks for any alarms across the cluster
passed, details = c.health.check_alarms
# alarms on the given node
passed, details = c.health.check_local_alarms
# is this node essential for an online quorum of any quorum queues?
passed, details = c.health.check_if_node_is_quorum_critical
# do any certificates used by this node's TLS listeners expire within
# three months?
passed, details = c.health.check_certificate_expiration(3, "months")
See the list of methods in RabbitMQ::HTTP::HealthChecks
to find out what other
health checks are available.
User tags returned by the RabbitMQ::HTTP::Client#list_users
and RabbitMQ::HTTP::Client#user_info
methods are now arrays of strings instead of comma-separated strings.
Internally the method encodes both command-separated strings and JSON arrays in API responses to support response types from RabbitMQ 3.9 and earlier versions.
See rabbitmq/rabbitmq-server#2676 for details.
When deserialising response bodies, the client now uses actual body length instead of
the value of the content-length
header.
Contributed by Ryan @rquant Quant.
GitHub issue: #49
Deprecated URI.escape
has been replaced with Addressable::URI.escape_component
.
This introduces addressable
as a new dependency.
Note: Faraday will now raise a Faraday::ResourceNotFound
instead of Faraday::Error::ResourceNotFound
.
GitHub issue: #45
Contributed by Niels Jansen.
GitHub issue: #43
Contributed by Rustam Sharshenov.
GitHub issue: #42
Contributed by @hatch-carl.
GitHub issue: #38
Contributed by Jon Homan.
This library no longer supports Ruby 1.8 and thus
doesn't need to depend on the effin_utf8
gem.
Contributed by Luciano Sousa.
Bodies of responses with content length of 0 will no longer be deserialised.
This improves compatibility with future versions of RabbitMQ that will use Cowboy 2.7.0 or later, which doesn't include the content-type header for blank responses (e.g. PUTs).
Spec files and development/CI scripts are no longer included into the gem.
GitHub issue: #30
Contributed by Mrinmoy Das.
URI path segment encoding (e.g. vhosts, queue names, etc) in this client now correctly encodes spaces.
GitHub issue: #28.
The :tags
attribute is no longer required by Client#update_user
. If not provided,
a blank list of tags will be used.
The client now can upload definitions (of queues, exchanges, etc):
defs = {
:queues => [{
:name => 'my-definition-queue',
:vhost => '/',
:durable => true,
:auto_delete => false,
:arguments => {
"x-dead-letter-exchange" => 'dead'
}
}]
}.to_json
c.upload_definitions(defs)
Contributed by Pol Miro.
If provided endpoint contains a path, it will be used instead of /api
.
Contributed by Pol Miro.
Client#protocol_ports
no longer fails with a nil pointer exception
for non-administrators.
The library now depends on hashie ~> 3.2
.
Contributed by Damon Morgan.
The library now depends on multi_json ~> 1.9
.
Contributed by Damon Morgan.
The project now depends on Faraday 0.9.x
.
Contributed by John Murphy.
RabbitMQ::HTTP::Client#delete_exchange
is a new function that deletes exchanges:
c.delete_exchange("/", "an.exchange")
Contributed by Matt Bostock.
The library no longer uses 1.9-specific hash syntax.
It is now possible to declare an exchange over HTTP API using RabbitMQ::HTTP::Client#declare_exchange
:
c.declare_exchange("/", exchange_name, :durable => false, :type => "fanout")
Contributed by Jake Davis (Simple).
The library now depends on hashie ~> 2.0.5
.
The library now depends on faraday ~> 0.8.9
.
The library now depends on multi_json ~> 1.8.4
.
RabbitMQ::HTTP::Client#queue_binding_info
,
RabbitMQ::HTTP::Client#bind_queue
, and
RabbitMQ::HTTP::Client#delete_queue_binding
are new methods that operate on queue bindings:
c = RabbitMQ::HTTP::Client.new("http://guest:[email protected]:15672")
c.bind_queue("/", "a.queue", "an.exchange", "routing.key")
c.queue_binding_info("/", "a.queue", "an.exchange", "properties.key")
c.delete_queue_binding("/", "a.queue", "an.exchange", "properties.key")
Contributed by Noah Magram.
RabbitMQ::HTTP::Client#enabled_protocols
is a new method that returns
a hash of enabled protocols to their ports. The keys are the same as
returned by Client#enabled_protocols
:
# when TLS and MQTT plugin is enabled
c.protocol_ports # => {"amqp" => 5672, "amqp/ssl" => 5671, "mqtt" => 1883}
RabbitMQ::HTTP::Client#enabled_protocols
is a new method that returns
a list of enabled protocols. Some common values are:
amqp
(AMQP 0-9-1)amqp/ssl
(AMQP 0-9-1 with TLS enabled)mqtt
stomp
# when TLS and MQTT plugin is enabled
c.enabled_protocols # => ["amqp", "amqp/ssl", "mqtt"]
It is now possible to pass credentials in the endpoint URI:
c = RabbitMQ::HTTP::Client.new("https://guest:[email protected]:15672/")
It is now possible to pass more options to Faraday connection, for example, HTTPS related ones:
c = RabbitMQ::HTTP::Client.new("https://127.0.0.1:15672/", username: "guest", password: "guest", ssl: {
client_cer: ...,
client_key: ...,
ca_file: ...,
ca_path: ...,
cert_store: ...
})
Any options other than username
and password
will be passed on to
Faraday::Connection
.
RabbitMQ::HTTP::Client#endpoint
is a new reader (getter) that makes
it possible to access the URI a client instance uses.
4xx
and 5xx
responses now will result in meaningful exceptions
being raised. For example, 404
responses will raise Faraday::Error::ResourceNotFound
.
The library now depends on multi_json ~> 1.7.0
.
- Operations on queues
- Operations on users
- Operations on permissions
- Operations on parameters
- Operations on policies
- Status overview
- Cluster nodes information
- Operations on exchanges, queues, bindings
- Operations on connections