Publicado por Luís Gustavo em 19 de Abril de 2009

RabbitMQ - Um sistema de fila rápido e confiável para Rubistas

rabbitmq.png Quando se trata do desenvolvimento de grandes sistemas com muitas partes inter-dependentes é comum atualmente utilizar sistemas de fila (queue), que funcionam como uma lista onde você pode adicionar e remover itens. Algumas aplicações podem usá-las para chamar processos de outros aplicativos ou transmitir logs ou informações de status entre eles.

O RabbitMQ um opção open source de sistema de filas rápido e confiável. Entretanto, ele não é desenvolvido em Ruby, mas em Erlang, uma linguagem funcional com boa reputação quando se trata de aplicativos distribuídos com alta disponibilidade e tolerantes a falha. Ele se apresenta como um daemon separado - como Apache, Passenger, memcached, ou MySQL que não são escrito em Ruby. Não é difícil usá-lo com Ruby, e você pode usá-lo com uma infinidade de linguagens, é claro. Assim, se você quer adicionar alguns itens vindos do Ruby e depois pegá-los para serem processados com outra linguagem (ou vice-versa) ele é ideal. O RabbitMQ também pode ser usando como um hub de comunicação entre todos seus processos.

Rany Keddo, um desenvolvedor da  Workling, falando a respeito dele, disse:

Se você estiver trabalhando com um volume grande de mensagens e precisar de um alto grau de confiabilidade, definitivamente você deveria considerar usar o RabbitMQ ao invés de Starling.

(E desde que eu comecei a escrever este artigo, esse argumento se tornou ainda mais pertinente, uma vez que o pŕoprio Twitter está trocando o Starling por um novo sistema feito em Scala (será que escala !? :))

Resumindo, o RabbitMQ tem o poder e reputação necessários se você quer trabalhar com filas de modo sério. Com isso em mente, Alexis Richardson (do time do RabbitMQ) e eu, juntamos algumas referências que podem ser úteis para você (como Rubista) quando você decidir pesquisar ou utilizá-lo:

Página oficial do RabbitMQ - Site com informações gerais sobre suas funcionalidades, links para documentação, downloads e exemplos.

Instalando o  RabbitMQ no OS X - Uma guia para instalação no Mac OS X feito por Rany Keddo. Incluindo a instalação do Erlang, que não é um processo rápido, mas vale o tempo gasto.

AMQP "driver" para Ruby/EventMachine - Uma biblioteca Ruby feito por Aman Gupta que provê uma implementação orientada a eventos para Rubistas do AMQP, construida em volta da EventMachine. Funciona no Ruby 1.8, 1.9, e JRuby e foi testado diretamente com o RabbitMQ.

Riding the Rabbit - Um artigo escrito por Dan Sinclair que demonstra como instalar uma instância do RabbitMQ, e utilizar a biblioteca  AMQP Ruby/EventMachine.

OH HAI RabbitMQ! Screencast - Um excelente screencast feito pelo rubista inglês Jonathan Conway que demonstra como instalá-lo e realizar algumas operações básicas.

Warren - Um encapsulador para AMQP - Uma biblioteca para colocar mensagens nas filas do RabbitMQ (e recebê-las na outra ponta) feito pela pessoal da Brightbox. Autenticação e funcionalidades de filtro podem ser adicionadas através de classes customizadas.

Apresentação sobre RabbitMQ e Ruby - Ben Hood (um dos desenvolvedores do RabbitMQ) nos dá uma apresentação de 40 minutos sobre RabbitMQ e Ruby. Ele sua história, as motivações para usar algo como ele, as abordagens utilizadas antigamente, AMQP, e mais um monte de coisas.

Deixe um Comentário