RabbitMQ ile AMQP standartında mesajlaşma sistemine hızlı bir giriş
RabbitMQ nedir?
RabbitMQ, Pivotal firması tarafından Erlang programlama dili ile geliştirilen AMQP standartlarına göre geliştirilmiş robust mesajlaşma sistemidir.
Kimler kullanmalı?
- Ölçeklenebilir uygulamalar yapmak istiyenler.
- Birden fazla uygulamayı belli bir standartta haberleştirmek isteyenler.
- Uygulamanızdaki resim işleme, rapor oluşturma gibi uzun süren işleri arka planda yapmak isteyenler.
Öne çıkan özellikleri
- Robust mesajlaşma
- Kullanım kolaylığı
- Geniş bir işletim sistemini üzerinde çalıştırılabilmesi
- Geniş bir geliştirme platformunu desteklemesi
- Açık kaynaklı ve ticari desteğinin bulunması
Terminoloji
Kurulum ve örneklere geçmeden önce RabbitMQ ve mesajlaşma ile ilgili bir kaç tanımı belirtmekte fayda vardır.
- Producer, mesajı gönderen taraftır.
P
ile gösterilir. - Queue, mesajların biriktiği havuzdur. Bir nevi mailbox gibi düşünülebilir.
- Consumer, mesajı alan taraftır.
C
ile gösterilir.
NOT:
- Producer, Queue ve Consumerlar aynı makine üzerinde olmak zorunda değildir.
- Producer ve Consumerlar aynı programlama dili ile yazılmak zorunda değildir.
Kurulum
Bu makalede sadece OSX için Homebrew ile kurulumu anlatılacaktır. İleri tarihte belki Ubuntu sunucular da eklenebilir.
Bu örneği Ruby dilinde yapacağız. RabbitMQ'nun Ruby Client'ı olarak Bunny’i gemini kullanabiliriz. Bunny'i kurmak için gem install bunny
demeniz yeterlidir.
OSX'e Homebrew ile kurulumu
brew update
brew install rabbitmq
Çıktı
==> Downloading http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.0/rabbitmq-server-mac-standalone-3.3.0.tar.gz
######################################################################## 100.0%
==> /usr/bin/unzip -qq -j /usr/local/Cellar/rabbitmq/3.3.0/plugins/rabbitmq_management-3.3.0.ez rabbitmq_management-3.3.0/priv/www/cli/rabbitmqadmin
==> Caveats
Management Plugin enabled by default at http://localhost:15672
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
To have launchd start rabbitmq at login:
ln -sfv /usr/local/opt/rabbitmq/*.plist ~/Library/LaunchAgents
Then to load rabbitmq now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.rabbitmq.plist
Or, if you don't want/need launchctl, you can just run:
rabbitmq-server
==> Summary
/usr/local/Cellar/rabbitmq/3.3.0: 1002 files, 26M, built in 119 seconds
Yukarıdaki çıktıdan anlaşıldığı gibi dikkat edilmesi gereken bir kaç konu vardır.
- Eğer işletim sisteminin açılışında RabbitMQ çalışacak ise aşağıdaki kodları çalıştırmanız gerekmektedir.
ln -sfv /usr/local/opt/rabbitmq/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.rabbitmq.plist
- Eğer RabbitMQ'yu manuel çalıştıracaksanız aşağıdaki kodu çalıştırmanız yeterlidir.
rabbitmq-server
Eğer rabbitmq-server
komutunu OSX bulamadı ise $PATH
‘nizde /user/local/sbin
tanımlı olmayabilir. echo $PATH
komutu ile olup olmadığını kontrol edebilirsiniz. Eğer yoksa /usr/local/sbin
'i $PATH
'inize eklemelisiniz çünkü Brew RabbitMQ'yu oraya kurmaktadır.
rabbitmq-server
komutunu çalıştırdıktan sonra http://localhost:15672/
adresinden yönetim paneline girebilirsiniz. Varsayılan ayarlarda aynı makineden bağlanabilmesi kaydı ile guest
kullanıcı ismi ve guest
şifresi ile bir kullanıcı tanımlanmıştır.
- URL : http://localhost:15672/
- Kullanıcı adı : guest
- Kullanıcı şifresi : guest
Geliştirme ortamımızı kurduğumuza göre RabbitMQ sitesinde bulunan altı adet örnek uygulamayı yapmaya geçebiliriz.
Saygılar.