08/03/2017 - BEANSTALK, LINUX
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.
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).
$ sudo apt-get update
$ sudo apt-get install beanstalkd
$ beanstalkd -v
beanstalkd 1.9
$ sudo service beanstalkd {start|stop|force-stop|restart|force-reload|status}
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
Ö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.
/var/lib/beanstalkd
boş./var/lib/beanstalkd
boş./var/lib/beanstalkd
boş./var/lib/beanstalkd
1 log ile dolu./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.
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
Ö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.
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.