🚀 Web hosting ultra-rapid de la doar 1€/lună!
HostPedia

Queue (Message Queue)

DevOps
Definiție

Message Queue este un sistem de comunicare asincronă între servicii sau componente ale unei aplicații. Mesajele sunt plasate într-o coadă de așteptare de către producător și procesate ulterior de către consumator, permițând decuplarea componentelor și procesarea eficientă a sarcinilor în fundal.

Message queue (coada de mesaje) este un pattern fundamental în arhitectura aplicațiilor moderne, în special în sistemele distribuite și microservicii. Funcționează pe principiul producător-consumator: o componentă trimite mesaje în coadă, iar altă componentă le preia și le procesează independent.

Cele mai populare sisteme de message queuing includ: RabbitMQ (protocol AMQP, versatil și ușor de configurat), Apache Kafka (optimizat pentru volume mari de date și streaming), Redis (queue simplu și rapid folosind liste sau Redis Streams) și Amazon SQS (serviciu managed în AWS).

În contextul web hosting-ului și al aplicațiilor web, message queues sunt folosite pentru: trimiterea email-urilor în fundal (în loc să blocheze request-ul HTTP), procesarea imaginilor (redimensionare, optimizare), generarea rapoartelor PDF, sincronizarea datelor între servicii, și procesarea plăților.

De exemplu, când un utilizator completează un formular de contact pe un site, în loc să trimită email-ul sincron (ceea ce ar încetini răspunsul paginii), mesajul este plasat într-o coadă. Un worker separat preia mesajele din coadă și le trimite prin SMTP, fără a afecta experiența utilizatorului.

Pentru aplicațiile PHP, Laravel oferă un sistem de queues integrat care suportă multiple drivere (Redis, database, SQS, Beanstalkd). WordPress folosește WP-Cron sau plugin-uri precum Action Scheduler pentru funcționalitate similară.

Avantajele principale ale message queues sunt: reziliența (mesajele persistă chiar dacă consumatorul este offline), scalabilitatea (poți adăuga mai mulți consumatori pentru a procesa mai rapid) și decuplarea (producătorul și consumatorul pot fi dezvoltați și deploy-ați independent).

Termeni Înrudiți