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.

Geliştirme ortamımızı kurduğumuza göre RabbitMQ sitesinde bulunan altı adet örnek uygulamayı yapmaya geçebiliriz.

Saygılar.

Kaynaklar

comments powered by Disqus