Mode Kerja RabbitMQ PHP

Mode kerja dalam RabbitMQ melibatkan konfigurasi beberapa pengonsumsi untuk memproses pesan dari antrian yang sama, yang dapat meningkatkan kecepatan pemrosesan bersamaan pesan. Arsitekturnya ditunjukkan dalam diagram berikut:

RabbitMQ Mode Kerja

Catatan: Terlepas dari mode kerja RabbitMQ yang digunakan, setiap antrian mendukung beberapa pengonsumsi, dan pesan dalam antrian yang sama hanya akan diproses oleh salah satu pengonsumsi.

1. Tutorial Prasyarat

Silakan baca bagian-bagian berikut untuk memahami pengetahuan terkait:

2. Mengimplementasikan Beberapa Pengonsumsi dalam PHP

PHP sendiri tidak mendukung teknologi bersamaan seperti multithreading and korutin, sehingga umumnya menggunakan multiproses untuk mencapai pemrosesan bersamaan. Di sini, kita menggunakan mode multiproses untuk mengimplementasikan pemrosesan bersamaan pengonsumsi dalam antrian.

2.1. Memulai Beberapa Proses Secara Manual

Untuk mengimplementasikan beberapa proses, cara paling sederhana adalah dengan menjalankan perintah PHP secara manual beberapa kali.

Contoh: Diasumsikan skrip pengonsumsi dari bagian sebelumnya adalah recv.php, kita dapat membuka beberapa jendela shell dan menjalankan skrip pengonsumsi secara berulang seperti ini:

php recv.php

php recv.php

Atau dalam jendela shell yang sama, masukkan skrip ke latar belakang untuk dijalankan seperti ini:

php recv.php &
php recv.php &

Penjelasan: Kerugian dari mengimplementasikan beberapa pengonsumsi secara manual seperti ini adalah bahwa proses tidak terawat dengan baik, tanpa pemantauan proses. Jika sebuah proses mengalami kegagalan, itu tidak akan dijalankan kembali secara otomatis.

2.2. Menggunakan Supervisor untuk Mengimplementasikan Beberapa Proses

Supervisor adalah pemantau proses dalam sistem operasi Linux, yang dapat memantau proses PHP. Jika sebuah proses PHP mengalami kegagalan, itu akan dijalankan kembali secara otomatis. Ini juga dapat mengonfigurasi konkurensi proses, mempermudah pemrosesan bersamaan dari beberapa pengonsumsi.

Berikut adalah contoh menggunakan Ubuntu, serupa untuk distribusi Linux lainnya.

Memasang Supervisor

sudo apt-get install supervisor

Mengonfigurasi Supervisor

File konfigurasi untuk Supervisor biasanya terletak di direktori /etc/supervisor/conf.d. Di direktori ini, Anda dapat membuat sejumlah file konfigurasi untuk memberi tahu Supervisor cara memantau proses-proses kami. Sebagai contoh, buat file rabbitmq-worker.conf untuk memantau proses pengonsumsi kami.

Contoh: File: rabbitmq-worker.conf

[program:rabbitmq-worker]
process_name=%(program_name)s_%(process_num)02d
command=php recv.php
autostart=true
autorestart=true
user=root
numprocs=10
redirect_stderr=true
stdout_logfile=/var/log/worker.log

Penjelasan parameter:

  • process_name: Definisi nama proses, dapat dinamai secara sembarangan. Di sini, digunakan dua variabel: program_name (nama proses) dan process_num (nomor proses).
  • command: Perintah yang perlu kita jalankan.
  • autostart: Apakah akan dimulai otomatis saat boot.
  • autorestart: Apakah akan dijalankan kembali secara otomatis.
  • user: Akun sistem untuk menjalankan perintah.
  • numprocs: Jumlah proses bersamaan, menunjukkan berapa banyak proses yang akan dijalankan.
  • stdout_logfile: Tempat file log berjalan disimpan.