Slide 1

Slide 1 text

Rabbit MQ Alguns detalhes

Slide 2

Slide 2 text

O que é Rabbit ● Broker de mensagens ● Desenvolvido em erlang ● Implementa vários protocolos de comunicação com: ○ AMPQ ○ MQTT ○ STOMP ○ HTTP ● Mensagens são processadas em memória ● Ferramenta de mercado ● Abre apenas uma conexão TCP com cada consumir

Slide 3

Slide 3 text

Mattheus Cassundé Desenvolvedor de software https://twitter.com/MattheusCassund https://github.com/cassunde https://www.linkedin.com/in/cassunde/ https://cassunde.github.io/

Slide 4

Slide 4 text

Funcionamento básico Broker

Slide 5

Slide 5 text

Funcionamento básico Broker Aplicação 1 Aplicação 2 Publish Consumer

Slide 6

Slide 6 text

Broker Aplicação 1 Aplicação 2 Publish Consumer tcp tcp Funcionamento básico

Slide 7

Slide 7 text

Broker Aplicação 1 Aplicação 2 Publish Consumer tcp tcp sale_queue cancel_queue Funcionamento básico

Slide 8

Slide 8 text

Broker Aplicação 1 Aplicação 2 Publish Consumer tcp tcp sale_queue cancel_queue sale_queue cancel_queue Funcionamento básico

Slide 9

Slide 9 text

channel 2 Broker Aplicação 1 Aplicação 2 Publish Consumer tcp tcp channel 1 sale_queue cancel_queue sale_queue cancel_queue Funcionamento básico

Slide 10

Slide 10 text

Funcionamento básico tcp channel sale_queue channel cancellation_queue

Slide 11

Slide 11 text

Exchange Uma mensagem não vai diretamente para uma fila Vai para uma exchange Exchange decide para qual ou quais filas vai encaminhar Usa route_key Tipos: ● Direct ● Fanout ● Topic ● Headers

Slide 12

Slide 12 text

Sempre que uma fila conecta-se em uma exchange deve ser definido uma routing_key. Toda mensagem deve ter uma routing_key para que o exchange saiba para qual fila deverá ser encaminhada a mensagem. Exchange - Routing Key Aplicação 1 Aplicação 3 RK = sale Aplicação 2 RK = cancellation

Slide 13

Slide 13 text

Exchange - Direct Envia mensagem direto para uma fila específica Cada fila vinculada deve ter um routing_key específica para esse tipo de exchange Aplicação 1 Aplicação 3 Aplicação 2 exchange RK= sale RK= cancellation RK= cancellation RK= sale

Slide 14

Slide 14 text

Exchange - Fanout Enviar mensagem para todas as filas vinculadas a exchange Aplicação 1 Aplicação 3 Aplicação 2 exchange

Slide 15

Slide 15 text

Exchange - Topic Podemos colocar regras encaminhamento de mensagens Um exchange do tipo TOPIC consegue identificar essas regras e encaminhar de acordo. *log_test : encaminha todas as mensagens cujo o routing_key finalize com log_test *teste*: encaminha todas as mensagens cujo o routing_key contenha teste

Slide 16

Slide 16 text

Exchange - Topic Aplicação 1 Aplicação 3 Aplicação 2 exchange RK= *cancel RK= *sale* RK= sale_cancel RK= sale

Slide 17

Slide 17 text

Configurações ● Durable ● auto-delete ● auto-expirer ● Message TTL ● Max Length ou Bytes ● Overflow

Slide 18

Slide 18 text

Configurações Durable Quando verdadeiro mensagens serão persistidas no disco

Slide 19

Slide 19 text

Configurações Auto Delete Quando todos os consumidores se desconectam o rabbit automaticamente remove fila

Slide 20

Slide 20 text

Configurações Auto Expire Tempo que uma fila pode ficar sem mensagem ou sem consumidor, quando atingir esse tempo rabbit removerá a mesma.

Slide 21

Slide 21 text

Configurações Message TTL Tempo de vida da mensagem, quando uma mensagem fica X tempo o próprio rabbit remove a mesma da fila

Slide 22

Slide 22 text

Configurações Max Length ou Bytes Quantidade máxima de mensagens em uma fila

Slide 23

Slide 23 text

Configurações Overflow Estratégia para remover mensagens quando uma fila transbordar

Slide 24

Slide 24 text

Configurações Overflow drop-head (default) Remove a mensagem mais antiga

Slide 25

Slide 25 text

Configurações Overflow reject-publish Mensagem é descartada.

Slide 26

Slide 26 text

Rabbit MQ Alguns detalhes https://www.rabbitmq.com/ Obrigado https://cassunde.github.io/