Releases: michaelklishin/rabbit-hole
v2.16.0
Changes Between 2.15.0 and 2.16.0 (Jan 4, 2023)
Definition Upload for a Single Virtual Host
UploadVhostDefinitions
is a new function that's similar to UploadDefinitions
but
allows for definition upload for a specific virtual host.
Contributed by @lescactus.
GitHub issue: #274
Fixed an Unmarshalling Failure of GetQueue
Contributed by @mcwarman.
Fixed an Unmarshalling Failure in ChannelDetails
that affected RabbitMQ versions older than 3.11.8.
Contributed by @vitorquintanilha.
GitHub issue: #284
v2.15.0
Changes Between 2.14.0 and 2.15.0 (May 18, 2023)
Further Improve Shovel Support
Contributed by @ChunyiLyu.
GitHub issue: #266
v2.14.0
Changes Between 2.13.0 and 2.14.0 (May 11, 2023)
Allow Setting Default Queue Type for Virtual Hosts
GitHub issue: #261
Contributed by @mqhenning.
Correctly Set (Shovel) Destination Publish Properties
Correctly pass dest-publish-properties
as a map.
GitHub issue: #262
Contributed by @Galvill.
v2.13.0
Changes between 2.12.x and 2.13.0
Avoid a panic when declaring a binding with unspecified destination type
Contributed by @ChunyiLyu.
PR: #253
Correct default for message TTL setting of federation upstreams
Contributed by @MirahImage.
PR: #233
Fixed several incorrect JSON tags
Contributed by @pazderak.
PR: #227.
v2.12.0
Changes Between 2.11.x and 2.12.0
Support for user limit operations
Contributed by @aitorpazos.
PR: #217
New function that lists connections in a specific virtual host
Contributed by @needsalongholiday.
Commit: 00d29ef
v2.11.0
Changes Between 2.10.0 and 2.11.0 (Sep 16, 2021)
This release contains minor breaking public API changes.
Avoid returning empty queue and exchange properties
struct values in ExportedDefinitions
, QueueInfo
, and ExchangeInfo
have all been changed to pointers. This is to avoid having the empty struct values returned when exporting definitions and listing queues and exchanges.
Updated ExportedDefinitions
, ExchangeInfo
and QueueInfo
.
Contributed by @mkuratczyk.
Support for a special returned value of Queue and Exchange AutoDelete
QueueInfo
and ExchangeInfo
now use a special type for AutoDelete
because returned value from RabbitMQ server could be a boolean or a string value "undefined".
// AutoDelete is a boolean but RabbitMQ may return the string "undefined"
type AutoDelete bool
// ExchangeInfo represents and exchange and its properties.
type ExchangeInfo struct {
Name string `json:"name"`
Vhost string `json:"vhost,omitempty"`
Type string `json:"type"`
Durable bool `json:"durable"`
AutoDelete AutoDelete `json:"auto_delete"`
...
}
// QueueInfo represents a queue, its properties and key metrics.
type QueueInfo struct {
// Queue name
Name string `json:"name"`
// Queue type
Type string `json:"type"`
// Virtual host this queue belongs to
Vhost string `json:"vhost,omitempty"`
// Is this queue auto-deleted?
AutoDelete AutoDelete `json:"auto_delete"`
...
}
Contributed by @mkuratczyk.
PR: #207
Support listing definitions for a specific vhost
Contributed by @mkuratczyk.
PR: #206
Support for vhost limits
Contributed by @Sauci.
PR: #200
Return more fields for NodeInfo
and QueueInfo
Contributed by @hjweddie.
PR: #198
v2.10.0
Changes Between 2.9.0 and 2.10.0 (Jun 3, 2021)
This release contains very minor breaking public API changes.
ShovelDefinition.SourceDeleteAfter
Type Now Matches That of ShovelDefinition.DeleteAfter
ShovelDefinition.SourceDeleteAfter
type has changed to match that of
ShovelDefinition.DeleteAfter
.
GitHub issue: #197
2.9.0
Changes Between 2.8.0 and 2.9.0 (Jun 2, 2021)
This release contains minor breaking public API changes.
Support for Lists of Federation Upstream URIs
Federation definition now uses a dedicated type, URISet
, to represent
a set of URIs that will be tried sequentially until the link
can successfully connect and authenticate:
type FederationDefinition struct {
Uri URISet `json:"uri"`
Expires int `json:"expires,omitempty"`
MessageTTL int32 `json:"message-ttl"`
MaxHops int `json:"max-hops,omitempty"`
PrefetchCount int `json:"prefetch-count,omitempty"`
ReconnectDelay int `json:"reconnect-delay"`
AckMode string `json:"ack-mode,omitempty"`
TrustUserId bool `json:"trust-user-id"`
Exchange string `json:"exchange,omitempty"`
Queue string `json:"queue,omitempty"`
}
// URISet represents a set of URIs used by Shovel, Federation, and so on.
// The URIs from this set are tried until one of them succeeds
// (a shovel or federation link successfully connects and authenticates with it)
type URISet []string
Support for Operator Policies
Contributed by @MrLuje.
2.8.0
Changes Between 2.7.0 and 2.8.0 (Apr 12, 2021)
Global Runtime Parameters
The library now supports global runtime parameters:
// list all global parameters
params, err := rmqc.ListGlobalParameters()
// => []GlobalRuntimeParameter, error
// get a global parameter
p, err := rmqc.GetGlobalParameter("name")
// => *GlobalRuntimeParameter, error
// declare or update a global parameter
resp, err := rmqc.PutGlobalParameter("name", map[string]interface{
endpoints: "amqp://server-name",
})
// => *http.Response, error
// delete a global parameter
resp, err := rmqc.DeleteGlobalParameter("name")
// => *http.Response, error
Contributed by @ChunyiLyu.
GitHub issue: #180
v2.7.0
Changes Between 2.6.0 and 2.7.0 (Mar 30, 2021)
This release contains minor breaking public API changes
and targets RabbitMQ 3.8.x (the only supported version at the time of writing)
exclusively.
Support for Modern Health Check Endpoints
The client now supports modern health check endpoints
(same checks as provided by rabbitmq-diagnostics
):
import (
"github.com/michaelklishin/rabbit-hole/v2"
)
rmqc, _ = NewClient("http://127.0.0.1:15672", "username", "$3KrEƮ")
res1, err1 := rmqc.HealthCheckAlarms()
res2, err2 := rmqc.HealthCheckLocalAlarms()
res3, err3 := rmqc.HealthCheckCertificateExpiration(1, DAYS)
res4, err4 := rmqc.HealthCheckPortListener(5672)
res5, err5 := rmqc.HealthCheckProtocolListener(AMQP091)
res6, err6 := rmqc.HealthCheckVirtualHosts()
res7, err7 := rmqc.HealthCheckNodeIsMirrorSyncCritical()
res8, err8 := rmqc.HealthCheckNodeIsQuorumCritical()
Contributed by Martin @mkrueger-sabio Krueger.
GitHub issue: #173
Support for Inspecting Shovel Status
ListShovelStatus
is a new function that returns a list of
Shovel status reports for a virtual host:
res, err := rmqc.ListShovelStatus("a-virtual-host")
Contributed by Martin @mkrueger-sabio Krueger.
GitHub issue: #178
Support for Lists of Shovel URIs
Shovel definition now uses a dedicated type, ShovelURISet
, to represent
a set of URIs that will be tried sequentially until the Shovel
can successfully connect and authenticate:
sDef := ShovelDefinition{
SourceURI: ShovelURISet([]string{"amqp://host2/%2f", "amqp://host3/%2f"}),
SourceQueue: "mySourceQueue",
DestinationURI: ShovelURISet([]string{"amqp://host1/%2f"}),
DestinationQueue: "myDestQueue",
AddForwardHeaders: true,
AckMode: "on-confirm",
DeleteAfter: "never",
}
Source and destination URI sets are only supported by the Shovel plugin in
RabbitMQ 3.8.x.
Originally suggested by @pathcl in #172.
Definition Export
rabbithole.ListDefinitions
is a new function that retuns
exported definitions from a cluster
as a typed Go data structure.
Contributed by @pathcl.
GitHub issue: #170
User Tags as Array
For forward compatibility with RabbitMQ 3.9, as of this
version the list of user tags is returned as an array
intead of a comma-separated string.
Compatibility with earlier RabbitMQ HTTP API versions, such as 3.8,
has been preserved.
Optional Federation Parameters are Now Marked with omitempty
Contributed by Michał @michalkurzeja Kurzeja.
GitHub issue: #177