Skip to content

Releases: michaelklishin/rabbit-hole

v2.16.0

04 Jan 13:39
64fd660
Compare
Choose a tag to compare

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.

GitHub issue: #279, #280

Fixed an Unmarshalling Failure in ChannelDetails

that affected RabbitMQ versions older than 3.11.8.

Contributed by @vitorquintanilha.

GitHub issue: #284

v2.15.0

18 May 11:23
Compare
Choose a tag to compare

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

11 May 20:13
cd9dc6f
Compare
Choose a tag to compare

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

23 Feb 12:55
5aa2074
Compare
Choose a tag to compare

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

23 Feb 12:50
2813466
Compare
Choose a tag to compare

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

16 Sep 16:58
Compare
Choose a tag to compare

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.

PRs: #208 and #209

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

03 Jun 16:22
965dfe1
Compare
Choose a tag to compare

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

02 Jun 10:04
0a87d8d
Compare
Choose a tag to compare

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

GitHub issues: #193, #194

Support for Operator Policies

Contributed by @MrLuje.

GitHub issues: #188, #190

2.8.0

14 Apr 13:04
41bc03b
Compare
Choose a tag to compare

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

30 Mar 17:04
e63db96
Compare
Choose a tag to compare

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