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