PHP RabbitMQ Çalışma Modu
RabbitMQ'da Çalışma modu, aynı kuyruktan mesajları işlemek üzere yapılandırılmış birden çok tüketiciyi yapılandırmayı içerir, bu da mesajların eşzamanlı işlenme hızını artırabilir. Mimarisi aşağıdaki diyagramda gösterilmiştir:
Not: Kullanılan RabbitMQ çalışma modundan bağımsız olarak, her kuyruk birden çok tüketiciyi destekler ve aynı kuyruktaki bir mesaj sadece tüketiciyi tarafından işlenir.
1. Ön Koşul Eğitimi
Lütfen ilgili bilgileri anlamanız için aşağıdaki bölümleri okuyun:
- RabbitMQ Çekirdek Kavramları
- RabbitMQ Çalışma Modu
- RabbitMQ'da PHP Hızlı Başlangıç (Okunması gereken bir bölüm, çünkü sonraki bölümler kodları tekrarlamayacak, sadece anahtar kodları gösterecek)
2. PHP'de Birden Çok Tüketici Uygulamak
PHP kendisi çoklu iş parçacığı ve işlemler gibi eşzamanlı teknolojileri desteklemez, bu nedenle genellikle eşzamanlı işleme ulaşmak için çoklu işlemeler kullanılır. Burada, kuyruktaki mesajları eşzamanlı olarak işleyen çoklu tüketici uygulamak için çoklu işlem modunu kullanıyoruz.
2.1. Manuel Olarak Birden Çok Süreci Başlatma
Birden çok işlemeyi uygulamanın en basit yolu, PHP komutunu manuel olarak birden çok kez çalıştırmaktır.
Örneğin:
Önceki bölümdeki tüketici betiği recv.php
varsayalım, çoklu kabuk penceresi açarak ve tüketici betiğini tekrar tekrar çalıştırarak şöyle yapabiliriz:
php recv.php
php recv.php
Veya aynı kabuk penceresinde, betiği arka planda çalıştırmak için şöyle yapabiliriz:
php recv.php &
php recv.php &
Açıklama: Bu manuel yol ile birden çok tüketiciyi uygulamanın dezavantajı, süreçlerin iyi yönetilmemesi, süreç izleme olmamasıdır. Bir süreç çökerse, otomatik olarak yeniden başlatılmayacaktır.
2.2. Birden Fazla Süreci Uygulamak İçin Supervisor Kullanma
Supervisor, Linux işletim sisteminde süreç izleyicisidir ve PHP süreçlerini izleyebilir. Bir PHP süreci çökerse, otomatik olarak yeniden başlatılır. Süreçlerin eşzamanlı işlenmesini kolaylaştırmak için süreç eşzamanlılığını yapılandırabilir.
Ubuntu'da kullanım örneği şöyle:
Supervisor'ün Kurulumu
sudo apt-get install supervisor
Supervisor'ü Yapılandırma
Supervisor'ün yapılandırma dosyası genellikle /etc/supervisor/conf.d dizininde bulunur. Bu dizinde, süreçlerimizi nasıl izleyeceğini Supervisor'a anlatmak için istediğiniz sayıda yapılandırma dosyası oluşturabilirsiniz. Örneğin, tüketici süreçlerimizi izlemek için rabbitmq-worker.conf
adında bir dosya oluşturun.
Örnek: Dosya: 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
Parametrelerin açıklaması:
- process_name: Süreç adının tanımı, isteğe bağlı olarak adlandırılabilir. Burada,
program_name
(süreç adı) veprocess_num
(süreç numarası) olmak üzere iki değişken kullanılmıştır. - command: Çalıştırmamız gereken komut.
- autostart: Otomatik olarak başlatıp başlatmama.
- autorestart: Otomatik olarak yeniden başlatıp yeniden başlatmama.
- user: Komutu çalıştırmak için hangi sistem hesabının kullanılacağı.
- numprocs: Eşzamanlı süreç sayısı, başlatılacak süreç sayısını gösterir.
- stdout_logfile: Çalışma günlüğünün kaydedildiği yer.