Bucky is built on top of the RabbitMQ Java client.
Even though the complexity of dealing with the java library directly was greatly simplified, there are still some key concepts which are important in order to fully understand Bucky.
A connection is a no more than a TCP connection to a Rabbit Broker. Connections are meant to be long lived and to be shared by multiple consumers in a single application. Unless explicitly specified otherwise (by creating multiple connections), bucky will only allocate one connection per application.
A channel can be seen as a lightweight connection that share a single TCP connection with other channels.
Channels, like connections, are meant to be long lived and can be shared across multiple consumers/publishers within a single application.
On creation, Bucky will allocate a single channel which will be used for:
then, for each consumer that’s registered, a new channel will be allocated.
If an exception occurs on a channel it will permanently closed and further calls that use that channel will result in failure. Given the current way, channels are allocated, this means that if a declaration or a publishing action result in one of these exception declarations and publishing will fail until the channel is restarted; consumption of messages should continue to work properly nevertheless.