Desenvolvimento de soluções baseadas em mensagens

Resumo do Azure Service Bus (filas/tópicos), Queue Storage, Dead-letter Queue e sessões de mensagens.

No AZ-204, os servicos de mensageria sao o nucleo da integracao de sistemas distribuidos. Isso cobre como implementar comunicacao assincrona e confiavel entre sistemas.

 

Por que precisamos de servicos de mensageria?

Imagine uma loja online onde, apos um pedido ser feito, voce precisa processar o pagamento, reduzir o estoque, agendar a entrega e enviar um e-mail de confirmacao ao mesmo tempo. Se todas essas tarefas estiverem diretamente conectadas, um passo lento bloqueia todo o pipeline.

Uma fila de mensagens resolve esse problema como uma caixa de correio. O sistema de pedidos deposita uma mensagem de "pedido concluido" na fila e imediatamente passa para a proxima tarefa. Os sistemas de pagamento, estoque e entrega cada um coleta mensagens da fila e processa de forma independente, cada um no seu proprio ritmo.

 

Azure Service Bus

O Service Bus e como o sistema de correspondencia interna de uma grande empresa. Vai muito alem de simplesmente entregar cartas: e um broker de mensagens de nivel empresarial que inclui confirmacao de entrega, tratamento de prioridades, entrega classificada e nova tentativa em caso de falha.

Fila (Queue) — mensageria 1:1

Um remetente envia uma mensagem para um receptor. As mensagens sao processadas em ordem FIFO (primeiro a entrar, primeiro a sair).

| Propriedade | Detalhes | |------------|---------| | Tamanho da mensagem | Ate 256 KB (camada Standard) a 100 MB (camada Premium) | | Deteccao de duplicatas | Se a mesma mensagem for enviada duas vezes, e processada automaticamente apenas uma vez | | TTL (Time-To-Live) | Tempo de expiracao da mensagem configuravel | | Processamento com bloqueio | Uma mensagem sendo processada por um receptor nao pode ser obtida por outro |

Topicos e assinaturas — mensageria 1:N

Um remetente envia uma mensagem para multiplos receptores. Filtros de assinatura permitem que cada receptor receba apenas as mensagens que correspondam aos seus criterios.

Filtro SQL: Filtrar usando condicoes no estilo SQL como Filtro de correlacao: Filtrar por um valor de propriedade especifico (melhor desempenho que o filtro SQL)

Por exemplo, se um topico de evento de pedido tiver tres assinaturas: Assinatura A (equipe de pagamentos): Recebe todos os pedidos Assinatura B (equipe VIP): Recebe apenas pedidos onde Assinatura C (equipe de pedidos grandes): Recebe apenas pedidos onde

Recursos avancados

| Recurso | Descricao | Quando usar | |---------|-----------|------------| | Fila de mensagens mortas (DLQ) | Uma fila separada onde as mensagens com falha se acumulam | Analisar e reprocessar mensagens com falha | | Sessao de mensagens | Processa em ordem as mensagens com o mesmo ID de sessao | Quando a ordem importa, como as etapas de um pedido individual | | Mensagens agendadas | Agenda uma mensagem para ser processada em um horario especifico | Entrega agendada, processamento adiado | | Encaminhamento automatico | Encaminha automaticamente de uma fila/assinatura para outra | Roteamento de mensagens | | Transacao | Processa multiplas operacoes de mensagens de forma atomica | Envio e recebimento como uma unica unidade |

Usando o SDK do Service Bus

PeekLock vs ReceiveAndDelete

| Modo | Comportamento | Quando usar | |------|-------------|------------| | PeekLock (padrao) | Obtem a mensagem em estado bloqueado; deve concluir explicitamente apos o processamento | Quando a perda de mensagem nao e aceitavel (seguro, recomendado) | | ReceiveAndDelete | Exclui da fila imediatamente ao receber | Quando a perda ocasional durante o processamento e aceitavel (mais rapido, mas arriscado) |

 

Azure Queue Storage

O Queue Storage e como uma caixa de correio do bairro. Oferece apenas a funcao basica de armazenar mensagens, sem servicos extras, mas e economico e facil de usar.

| Propriedade | Detalhes | |------------|---------| | Tamanho da mensagem | Ate 64 KB | | Numero de mensagens | Ilimitado (ate a capacidade da conta de armazenamento) | | Tempo limite de visibilidade | O tempo em que uma mensagem fica oculta para outros receptores enquanto um receptor a processa | | Retencao | Ate 7 dias | | Metodo de acesso | API REST HTTP/HTTPS |

O Queue Storage faz parte de uma conta do Azure Storage, portanto pode ser usado na mesma conta que o Blob Storage.

 

Comparacao: Service Bus vs Queue Storage

| Aspecto | Service Bus | Queue Storage | |--------|------------|--------------| | Tamanho da mensagem | Ate 100 MB (Premium) | Ate 64 KB | | Ordenacao de mensagens | Sessoes FIFO suportadas | Nao garantida | | Deteccao de duplicatas | Suportada | Nao suportada | | Topicos/Assinaturas (1:N) | Suportados | Nao suportados | | Fila de mensagens mortas | Suportada | Nao suportada | | Transacoes | Suportadas | Nao suportadas | | Custo | Relativamente mais alto | Economico | | Melhor para | Empresarial, fluxos de trabalho complexos | Fila simples, alto volume, baixo custo |

!Service Bus vs Queue Storage

Pontos-chave do exame

"Mensageria confiavel de nivel empresarial, fluxos de trabalho complexos" -- Azure Service Bus

"Entrega de mensagens 1:1, FIFO" -- Fila do Service Bus (Queue)

"Entrega de mensagens 1:N, filtros por assinatura" -- Topico do Service Bus + Assinatura

"Filtrar mensagens com condicoes no estilo SQL" -- Filtro SQL

"Filtrar por valor de propriedade, melhor desempenho que o filtro SQL" -- Filtro de correlacao

"Onde as mensagens com falha sao armazenadas para analise" -- Fila de mensagens mortas (DLQ)

"Processar em ordem mensagens com o mesmo ID de sessao" -- Sessao de mensagens

"Manter bloqueio ate confirmar o processamento (seguro)" -- PeekLock

"Excluir imediatamente ao receber (rapido mas com risco de perda)" -- ReceiveAndDelete

"Fila simples, baixo custo, mensagens abaixo de 64 KB" -- Azure Queue Storage

"Tempo limite de visibilidade: oculta uma mensagem durante o processamento para que outros receptores nao possam obte-la" -- Tempo limite de visibilidade do Queue Storage

Voltar à lista do blog