Beanstalk RabbitMQ'ya benzeyen, uzun süreli çalışacak olan işleri sahne arkasında işleyen bir mesajlaşma aracıdır. İşleyişinde yayıncı/client bir mesaj/iş verir ve bu işleyici/server tarafından işlenir. Daha fazla bilgi için Beanstalk, FAQ ve Options sayfalarını ziyaret edin.


Elementler


Mevcut olan elementleri diğer sıralama sistemlerinin elementleri gibi çalışırlar ama isimleri değişebilir. Tubes(Queues), Jobs(Messages), Producers(Senders) ve Consumers(Receivers).


Sunucu kurulumu


$ sudo apt-get update
$ sudo apt-get install beanstalkd

$ beanstalkd -v
beanstalkd 1.9

Mevcut comutlar


$ sudo service beanstalkd {start|stop|force-stop|restart|force-reload|status}

Konfigürasyon dosyası


Bu dosyalar size basit bilgiler verecek.


$ cat /etc/default/beanstalkd
$ cat /etc/init.d/beanstalkd # For full details (Try not to touch this)

Bu komut size ayrıntılı bilgiler verecek.


$ telnet 127.0.0.1 11300
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

# Type 'stats' to see very valuable info

İşleri kalıcı olarak tutmak istiyorsanız aşağıdaki seçeneği kullanın. Kullanıldığında beanstalkd tüm işleri /var/lib/beanstalkd klasöründe tutar. Herhangi bir nedenden dolayı sistem kapanıp yeniden açıldığında, beanstalkd tüm logları okuyup kurtarma işlemi yapacaktır, ama bu sunucunun başlamasını yavaşlatacaktır. Aklınızda bulunsun, bu işlem diskte bayağı bir yer kullanabilir yani en ufak bir iş ortalama 10MB yer kaplayabiliyor.


BEANSTALKD_EXTRA="-b /var/lib/beanstalkd"

Aşağıdaki seçeneği kullanarak, sistemin yeniden başlaması durumunda beanstalkd sunucusunu otomatik olarak başlatabilirsiniz.


START=yes

Aşağıdaki seçeneği kullanarak, işlerin büyüklüğünü arttırabilirsiniz. Varsayılan 65KB'dir. Genel olarak işleri mümkün olduğunca küçük tutun.


BEANSTALKD_EXTRA="-z 524280" # 524KB

İşleri kurtarma


Öncelikle konfigürasyon dosyanızın aşağıdaki gibi olması gerekli. Eğer persistence özelliğini aktifleştirmezseniz, işleri kurtarma ihtimaliniz kalmıyor, ki bu da bir felaket olabilir.


#/etc/default/beanstalkd
BEANSTALKD_LISTEN_ADDR=127.0.0.1
BEANSTALKD_LISTEN_PORT=11300

# Mark jobs as persistent
BEANSTALKD_EXTRA="-b /var/lib/beanstalkd"
# Start beanstalkd server at service/os boot or beanstalkd start/restart
START=yes

Persistence özelliğinin çalışma mantığı aşağıdaki gibidir.


  1. Sunucu çalışır vaziyette.

  2. Sırada bekleyen bir iş yok.

  3. Log klasörü /var/lib/beanstalkd boş.

  4. Sunucu yeniden başlatıldı.

  5. Sırada bekleyen bir iş yok.

  6. Log klasörü /var/lib/beanstalkd boş.

  7. Sırada bekleyen bir iş var.

  8. Log klasörü /var/lib/beanstalkd boş.

  9. Sunucu yeniden başlatıldı.

  10. Log klasörü /var/lib/beanstalkd 1 log ile dolu.

  11. Sunucu yeniden başlatıldı.

  12. Log klasörü /var/lib/beanstalkd 2 log ile dolu.

Burada olan şey, beanstalk tüm işleri "persistent" (kalıcı) olarak işaretler ama gerekli log dosyalarını hemen yaratmaz. Log dosyalarını sadece sunucu yeniden başlatıldığında yaratır ve onları okuyarak işleri alakalı olan sıralara tekrar yerleştirir. Bunun iyi tarafı, log dosyalarını silebilirsiniz çünkü beanstalk işleri alakalı olan sıralara tekrar yerleştirdi bile. Aklınızda bulunsun, eğer bu kurtarılan işleri işleyip bitirmeden log dosyalarını silerseniz, bir daha ki sunucu yeniden başlatma işleminde işler kaybolacaktır bu nedenle, log dosyalarını silmeden önce işleri işleyip bitirin.


Web arayüzü kurulumu


Aşağıdaki composer komutu Beanstalk Console programını /var/www/html/beanstalk_console yoluna kuracak. Daha fazla bilgi için Beanstalk Console sayfasını ziyaret edin.


$ composer create-project ptrofimov/beanstalk_console -s dev /var/www/html/beanstalk_console

Çalıştırma


Öncelikle sunucunun çalışıp çalışmadığını $ sudo service beanstalkd status komutu ile kontrol edin. Eğer çalışmıyorsa $ sudo service beanstalkd start komutu ile çalıştırabilirsiniz.


Web arayüzüne ulaşma


Kurulum klasörüne girin.


$ cd /var/www/html/beanstalk_console

Sunucunun kurulu olduğu bilgisayarın IP adresini bulun. Ben vagrant kullanıyorum ve ana bilgisayardan vagrant sistemime 192.168.50.10 IP adresini kullanarak ulaşıyorum.


$ hostname -I
10.0.2.15 192.168.50.10

Sunucuyu çalıştıralım.


beantstalk_console$ php -S 192.168.50.10:7654 -t public
PHP 5.5.9-1ubuntu4.20 Development Server started at Tue Mar 7 21:11:14 2017
Listening on http://192.168.50.10:7654
Document root is /var/www/html/beantstalk_console/public
Press Ctrl-C to quit.

Web tarayıcınızdan http://192.168.50.10:7654 adresine gidin. "Add server" butonuna tıklayın. Mevcut olan seçenekleri localhost:11300 değiştirmeden "Add server" butonuna tıklayın.