Sobes.tech
Junior — Middle

Qual é a diferença entre o papel e a interação de um ou vários consumidores num sistema de processamento de mensagens?

sobes.tech IA

Resposta da IA

No sistema de processamento de mensagens, o papel do consumidor é receber e processar mensagens da fila ou tópico.

Se houver um único consumidor no sistema, ele processa todas as mensagens sequencialmente, garantindo uma ordem simples e controle.

Com vários consumidores:

  • As mensagens são distribuídas entre eles (por exemplo, através de balanceamento de carga).
  • Isso aumenta o desempenho e a escalabilidade, pois o processamento ocorre em paralelo.
  • É importante notar que a ordem das mensagens pode ser perturbada se vários consumidores processarem partes diferentes do fluxo.

A interação entre consumidores geralmente é mínima — eles trabalham de forma independente, mas podem coordenar-se através de mecanismos de bloqueio ou transações distribuídas, se for necessária coerência.

Exemplo em Go usando um canal para múltiplos consumidores:

messages := make(chan string)

// Iniciar múltiplos consumidores
for i := 0; i < 3; i++ {
    go func(id int) {
        for msg := range messages {
            fmt.Printf("Consumidor %d processou a mensagem: %s\n", id, msg)
        }
    }(i)
}

// Enviar mensagens
messages <- "msg1"
messages <- "msg2"
close(messages)

Aqui, três consumidores processam em paralelo mensagens de um único canal.