Artigos

Cloud

Azure Service Bus em producao: o que aprendi em 3 anos

Dicas praticas para usar Azure Service Bus em sistemas criticos. Dead letters, retry policies, e como evitar perda de mensagens.

·10 min de leitura

Por que Service Bus?

Quando voce precisa de mensageria confiavel no Azure, Service Bus e a escolha natural. Mas "confiavel" so e verdade se voce configurar corretamente.

Configuracoes que salvam vidas

1. Dead Letter Queue (DLQ) - Sua rede de seguranca

var options = new ServiceBusProcessorOptions
{
    MaxConcurrentCalls = 10,
    AutoCompleteMessages = false, // IMPORTANTE: controle manual
    MaxAutoLockRenewalDuration = TimeSpan.FromMinutes(10)
};

Sempre monitore a DLQ. Mensagens la sao bugs esperando serem descobertos.

2. Retry policy inteligente

services.AddAzureClients(builder =>
{
    builder.AddServiceBusClient(connectionString)
        .ConfigureOptions(options =>
        {
            options.RetryOptions = new ServiceBusRetryOptions
            {
                Mode = ServiceBusRetryMode.Exponential,
                MaxRetries = 5,
                Delay = TimeSpan.FromSeconds(1),
                MaxDelay = TimeSpan.FromSeconds(30)
            };
        });
});

3. Idempotencia - Assuma que vai duplicar

public async Task ProcessarPedido(PedidoMessage msg)
{
    // Verifica se ja processou
    if (await _cache.ExistsAsync($"processed:{msg.MessageId}"))
        return;
    
    await _pedidoService.Processar(msg);
    
    // Marca como processado (TTL de 24h)
    await _cache.SetAsync($"processed:{msg.MessageId}", true, TimeSpan.FromHours(24));
}

Metricas que importam

MetricaAlerta quando
DLQ count> 0
Active messages> threshold normal
Processing time P95> SLA
Lock renewalsCrescendo

Custo vs Performance

Tip economica: Use sessions apenas quando necessario. Elas custam mais e limitam throughput.

// Com sessions: mensagens do mesmo SessionId vao pro mesmo consumer
// Sem sessions: maximo paralelismo, menor custo

Service Bus e confiavel. Seu codigo consumindo ele e que precisa ser.

#Azure#Service Bus#Mensageria#Producao
T

Tiago Spana

Software Engineer & Architect

Engenheiro de software com foco em arquitetura de sistemas, cloud-native e DevOps. Construindo sistemas escalaveis em producao.

Gostou do conteudo?

Inscreva-se para receber novos artigos sobre engenharia de software.