Projeto simples em PHP para estudar mensageria com RabbitMQ usando a biblioteca php-amqplib/php-amqplib.
O repositório está dividido em dois exemplos:
tutorial1/: exemplo básico de produtor e consumidor com a filahellotutorial2/: simulação de envio de e-mails com múltiplos workers consumindo a filaemail_send_queue
- PHP 8.x
- Composer
- RabbitMQ rodando localmente em
localhost:5672 - credenciais padrão do RabbitMQ:
guest/guest
composer installConsumidor:
php tutorial1/receive.phpProdutor:
php tutorial1/send.phpEsse exemplo envia várias mensagens Hello World! para a fila hello.
O segundo exemplo simula um sistema de disparo de e-mails. O produtor cria um lote de mensagens e os workers consomem uma por vez, confirmando o processamento com ack.
Inicie um ou mais workers em terminais diferentes:
php tutorial2/worker.phpDepois publique o lote de e-mails:
php tutorial2/new_task.php "Campanha promocional da semana"O produtor envia 100 jobs de e-mail para a fila email_send_queue. Cada mensagem contém:
email_idtosubjectmessage
Para ver as filas do servidor RabbitMQ rodando no Ubuntu:
sudo rabbitmqctl list_queuesPara excluir (matar) uma fila do RabbitMQ:
sudo rabbitmqctl delete_queue nome_da_filaSe quiser limpar uma fila sem apagá-la, use:
sudo rabbitmqctl purge_queue nome_da_fila- As filas foram declaradas como
quorum - O
tutorial2/worker.phpusabasic_qoscom prefetch1para distribuir melhor os jobs entre vários workers - O tempo de
sleep()no worker serve apenas para simular o processamento do envio