basic_nack & basic_reject este o componentă esențială în ecosistemul RabbitMQ. Respingerea explicită a unui mesaj eșuat, cu posibilitatea de a-l reintroduce în coadă (requeue) sau a-l direcționa către Dead Letter Queue.
Sintaxă și Utilizare Practică
Exemplu practic documentat pas cu pas:
def on_message(channel, method_frame, header_frame, body):
try:
proceseaza_plata(body)
channel.basic_ack(delivery_tag=method_frame.delivery_tag)
except EroareTemporaraRetea:
# Re-queue pentru reîncercare ulterioară
channel.basic_nack(delivery_tag=method_frame.delivery_tag, requeue=True)
except DateInvalideEroare:
# Respingere definitivă (requeue=False trimite mesajul direct la Dead Letter Exchange)
channel.basic_nack(delivery_tag=method_frame.delivery_tag, requeue=False)
Bune Practici în Producție
- Performanță și Resurse: Optimizați parametrii de alocare de resurse și respectați cerințele de I/O și memorie.
- Fiabilitate: Asigurați monitorizarea proactivă a metricilor cheie și configurați mecanisme sigure de persistență.
- Scalabilitate: Proiectați partiționarea și clusterele luând în calcul creșterea volumului de trafic.