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.
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
| Metrica | Alerta quando |
|---|---|
| DLQ count | > 0 |
| Active messages | > threshold normal |
| Processing time P95 | > SLA |
| Lock renewals | Crescendo |
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 custoService Bus e confiavel. Seu codigo consumindo ele e que precisa ser.
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.