How do I connect to a RabbitMQ cluster with a Ruby Driver (AMQP, Bunny or March Hare)

344 views
Skip to first unread message

gonace

unread,
Jan 26, 2015, 5:42:28 AM1/26/15
to rabbitm...@googlegroups.com
Hi
I'm having a bit of a problem understanding how to use a Ruby RabbitMQ Driver in a RabbitMQ High Availability Cluster. I have a cluster of three nodes running RabbitMQ 3.4.3 and the cluster is set to High Availability and mirrors queues over to all nodes. If one or two nodes goes down for some reason the application handling the messaging queue should not be affected.

But no driver I've seen support any form of redundancy in this manner, Bunny have the option ":hosts" since 1.5.0 but it only select one of the hosts in this options and no documentation about if Bunny checks if the selected host is up or not.

I'm searching for a way to be sure that the application handling the publishing and the application handling the consumption of these messages won't fail or loss messages if one or two nodes in the RabbitMQ Cluster have failed.


There seems to be a good documentation about this on the RabbitMQ side but sparse or no documentation about this on any of the AMQP Drivers I've found.

Any helt would be loved :)

Regards
Erik

Michael Klishin

unread,
Jan 26, 2015, 5:46:20 AM1/26/15
to rabbitm...@googlegroups.com, gonace


On 26 January 2015 at 13:42:29, gonace (erik.he...@obscured.se) wrote:
> I'm having a bit of a problem understanding how to use a Ruby RabbitMQ
> Driver in a RabbitMQ High Availability Cluster. I have a cluster
> of three nodes running RabbitMQ 3.4.3 and the cluster is set to
> High Availability and mirrors queues over to all nodes. If one
> or two nodes goes down for some reason the application handling
> the messaging queue should not be affected.
>  
> But no driver I've seen support any form of redundancy in this
> manner, Bunny have the option ":hosts" since 1.5.0 but it only
> select one of the hosts in this options and no documentation about
> if Bunny checks if the selected host is up or not.

Bunny connects to a randomly chosen host from the list. If it loses connection
or cannot connect to begin with then another host is picked and Bunny connects to that, and so on.

> I'm searching for a way to be sure that the application handling
> the publishing and the application handling the consumption
> of these messages won't fail or loss messages if one or two nodes
> in the RabbitMQ Cluster have failed.

There is more to high availability than providing a list of hosts, see [1].

> There seems to be a good documentation about this on the RabbitMQ 
> side but sparse or no documentation about this on any of the AMQP
> Drivers I've found.

Any client can connect to any node. You can stick an HAproxy in front of your cluster or provide
a list of hosts. There isn't much to add to [1] in client documentation.

1. http://www.rabbitmq.com/reliability.html
--
MK

Staff Software Engineer, Pivotal/RabbitMQ

gonace

unread,
Jan 26, 2015, 5:56:44 AM1/26/15
to rabbitm...@googlegroups.com, erik.he...@obscured.se
Hi awesome, thank I'll take a look at  http://www.rabbitmq.com/reliability.html 
Reply all
Reply to author
Forward
0 new messages