Introdução
Este artigo é o primeiro de uma série de artigos que pretendo fazer para complementar o material que será apresentado na PHPConference 2015
O RabbitMQ é um gerenciador de fila assíncrono, seu intuito é basicamente separar os enviadores dos receptores e funcionar como um intermediário de mensagens, garantindo a sua entrega em formato de fila. A mensageria é uma técnica que soluciona a comunicação entre sistemas diferentes de forma confiável, e um Barramento de Mensagens é o mecanismo que coordena o envio e a recepção de mensagens em uma fila.
AMPQ (Advanced Message Queuing Protocol): É um protocolo sobre o qual trabalha o rabbitMQ, este foi criado para tentar unificar todas as tecnologias envolvidas em um sistema de mensagens, funciona como um protocolo de comunicação em rede, similar ao HTTP.
Mensageria: sistemas que trocam mensagens por intermédio de um servidor que em geral é chamado de message broker. A razão para sua existência é a baixa confiabilidade das redes que interligam computadores. Este sistema garante que o receptor receberá a mensagem enviada.
Fila (Queue) - É um buffer que armazena as mensagens dentro do RabbitMQ para ser consumida posteriormente.
Consumidor (Consumer) - É quem recebe as mensagens,que estão na fila.
Producer: Aplicações responsáveis por publicar mensagens nos exchanges.
Exchange: Sua tarefa é receber as mensagens do producer e encaminhar as mensagens para filas;
Queues: Armazenam as mensagens e encaminham elas para os consumers;
Transmição
Basicamente uma mensagem é transmitida por 5 passos:
- Create - O remetente cria a mensagem;
- Send - O remetente adiciona a mensagem para um canal.
- Deliver - O sistema de mensagens move a mensagem do computador do remetente para o computador do receptor, tornando-o disponível para o receptor.
- Receive - O receptor lê a mensagem a partir do canal.
- Process - O receptor extrai os dados da mensagem.
Neste diagrama entendemos alguns conceitos:
- Send and forget: Quando o Seding Application envia a mensagem para o canal de mensagem, uma vez que o envio estiver completo, o remetente não se preocupa mais com a entrega.
- Store and forward: Ao receber esta mensagem o canal de mensagens grava esta mensagem na memória ou no disco, e disponibiliza ao receptor até que a mensagem chegue ao seu destino.
Desta forma cada sistema tem sua responsábilidade podendo encapsular da melhor forma sua lógica. Sem ter de se preocupar se a etapa seguinte já aconteceu. Componentes com responsabilidades bem definidas implicam em melhor reutilização.
RabbitMQ
É uma aplicação open source para troca de mensagens desenvolvida em Erlang, construído no protocolo AMQP, mas também compatível com outros protocolos como HTTP, MQTT e STOMP. O projeto responsável RabbitMQ teve início em 2007 pela empresa Rabbit Technologies Ltd. e, posteriormente, foi incorporado pela VMWare passando a fazer parte da iniciativa Pivotal. O RabbitMQ é composto por três componentes, além do produtor e do consumidor: O Exchange, a Queue e o binding.
Exchange: Sua tarefa é receber as mensagens do producer e encaminhar as mensagens para filas;
Queues: Armazenam as mensagens e encaminham elas para os consumers;
O exchange recebe a mensagem de um producer e encaminha para as filas de acordo com um critério pré-definido. Esse critério é chamado de binding. O exchange é basicamente um sistema de rotas, que inspeciona a mensagem e usando sua tabela de critérios decide como a encaminhar as mensagens, seja para uma fila de mensagem ou para outro exchange.
O Canal (Channel) faz a conexão da aplicação cliente com o broker através do protocolo TCP. As conexões usam autenticação e podem usar conexões SSL. Conexões via TCP custam caro para o sistema operacional e, por isso, os canais existem. Os canais, dentro do protocolo AMQP, são “conexões leves que compartilham a mesma conexão TCP”, é necessária apenas uma instância de conexão para executar múltiplas ações.
Continua em RabbitMQ Exchange
Referências
Nenhum comentário:
Postar um comentário