Escala de consumidores en RabbitMQ
El throughput sale del prefetch, la estrategia de ack y las routing keys similares a particiones — no de añadir consumidores que compiten por el mismo conjunto sin ack.
Experiencia personal
Pipelines de ecommerce y workers con RabbitMQ (AMQP): consumidores en competencia, estrategia de ack y la diferencia entre una routing key caliente y trabajo que sí puede escalar en horizontal.
Perspectiva técnica
Escalar consumidores en horizontal solo funciona si el broker puede entregar trabajo independiente. Una sola routing key caliente, un lock global en el worker o un upsert sobre la misma fila te serializa sin importar el número de consumidores.
Prefetch es el primer dial. Demasiado alto, y un consumidor lento retiene un conjunto grande sin ack. Demasiado bajo, y el broker se vuelve charlatán. Haz ack después del efecto secundario que no puedes permitirte duplicar — o haz el handler idempotente y haz ack antes.
Los mensajes venenosos necesitan un camino de dead-letter con reintento acotado. El requeue infinito es cómo un payload malo tumba una flota.
Architecture
Broker, consumidores en competencia, dead letter
Publishers
Exchange
Queue
Worker
Worker
Worker
Dead letter
Perspectiva técnica. Escala consumidores solo cuando el trabajo es particionable.