- Notifications
You must be signed in to change notification settings - Fork145
An AMQP 0-9-1 Go client maintained by the RabbitMQ team. Originally by@streadway: `streadway/amqp`
License
rabbitmq/amqp091-go
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This is a Go AMQP 0.9.1 client maintained by theRabbitMQ core team.It wasoriginally developed by Sean Treadway.
Some things are different compared to the original client,others haven't changed.
This library uses a different package name. If moving fromstreadway/amqp
,using an alias may reduce the number of changes needed:
amqp"github.com/rabbitmq/amqp091-go"
This client uses the same 2-clause BSD license as the original project.
This client retains key API elements as practically possible.It is, however, open to reasonable breaking public API changes suggested by the community.We don't have the "no breaking public API changes ever" rule and fully recognizethat a good client API evolves over time.
This project is based on a mature Go client that's been around for over a decade.
This client supports two most recent Go release series.
This project supports RabbitMQ versions starting with2.0
but primarily testedagainstcurrently supported RabbitMQ release series.
Some features and behaviours may be server version-specific.
Provide a functional interface that closely represents the AMQP 0.9.1 modeltargeted to RabbitMQ as a server. This includes the minimum necessary tointeract the semantics of the protocol.
Things not intended to be supported.
- Auto reconnect and re-synchronization of client and server topologies.
- Reconnection would require understanding the error paths when thetopology cannot be declared on reconnect. This would require a new setof types and code paths that are best suited at the call-site of thispackage. AMQP has a dynamic topology that needs all peers to agree. Ifthis doesn't happen, the behavior is undefined. Instead of producing apossible interface with undefined behavior, this package is designed tobe simple for the caller to implement the necessary connection-timetopology declaration so that reconnection is trivial and encapsulated inthe caller's application code.
- AMQP Protocol negotiation for forward or backward compatibility.
- 0.9.1 is stable and widely deployed. AMQP 1.0 is a divergentspecification (a different protocol) and belongs to a different library.
- Anything other than PLAIN and EXTERNAL authentication mechanisms.
- Keeping the mechanisms interface modular makes it possible to extendoutside of this package. If other mechanisms prove to be popular, thenwe would accept patches to include them in this package.
- Support for
basic.return
andbasic.ack
frame ordering.This client uses Go channels for certain protocol events and ordering betweenevents sent to two different channels generally cannot be guaranteed.
See the_examples subdirectory for simple producers and consumers executables.If you have a use-case in mind which isn't well-represented by the examples,please file an issue.
Pull requests are very much welcomed. Create your pull request on a non-mainbranch, make sure a test or example is included that covers your change, andyour commits represent coherent changes that include a reason for the change.
SeeCONTRIBUTING.md for more information.
BSD 2 clause, see LICENSE for more details.
About
An AMQP 0-9-1 Go client maintained by the RabbitMQ team. Originally by@streadway: `streadway/amqp`