Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RabbitMQ ve Temel Kavramlar

RabbitMQ ve Temel Kavramlar

RabbitMQ Kuyruk Sistemi ve Temel Kavramlar

Haydar Külekci

March 08, 2016
Tweet

More Decks by Haydar Külekci

Other Decks in Technology

Transcript

  1. RabbitMQ Nedir? • Bir mesaj kuyruk (kuyruk yönetici) uygulamasıdır. •

    Mesaj her türlü bilgi içerebilir. • Mesajın tüketicilere ulaşmasını sağlar. • Diğer bir uygulamayı tetiklemek için kullanılabilir. https://www.rabbitmq.com/img/tutorials/intro/hello-world-example-routing.png
  2. Neden Kuyruk Kullanmalıyım? • Eşzamanlı olmayan iletişim (Kullanıcıyı bekletmeden) için

    • Ağır işlemler sırasında hızlıca cevap dönebilmek için • Uygulamalar arasında direk bağlantı kurmamak için • Event-Driven ilerleyebilmek için • Uygulamamızı daha rahat ölçekleyebilmek (scaling) için http://www.iron.io/top-10-uses-for-message-queue/
  3. Temel Kavramlar • Producer : Mesaj üreten uygulamalar • Consumer

    : Mesajları eriten uygulamalar • Broker : Mesajı alan ve yönlendiren uygulamalar • Exchange : Mesajları alıp kuyruklara yönlendiren yapılar • Queue : Mesajları tüketicilerin alabilmesi için barındıran yapılar • Binding : Mesajları kuyruklara atama/ bağlama işlemi • AMQP: AMQP (Advanced Message Queuing Protocol) RabbitMQ’nun mesajlaşma için kullandığı bir protokoldür. https://www.cloudamqp.com/images/blog/exchanges_bidings_routing_keys.png
  4. Mesaj Akışı • Producer Exchange'e bir mesaj yayınlar. • Exchange

    mesajı alır ve kendi türüne göre mesajı kuyruğa yönlendirme ile yükümlüdür. • Exchange'den kuyruklara bir bağlama (binding) işlemi yapılır. Bir mesaj birden fazla kuyurğa bağlanabilir. • Mesajlar bir tüketici (consumer) alana kadar kuyrukta bekler. • Tüketici mesajları alır. https://www.cloudamqp.com/images/blog/exchanges_bidings_routing_keys.png
  5. Exchange • Mesajlar RabbitMQ'da yayınlandığında direk olarak kuyruğa gönderilmez. •

    Öncelikli olarak bir Exchange'e gönderilir. • Exchange mesajlarınızı farklı kuyruklara yönlendirir. (Routing and Binding) https://www.cloudamqp.com/images/blog/exchanges_bidings_routing_keys.png
  6. Exchange Türleri • Direct : Yönlendirme anahtarlarına göre mesajları kuyruklara

    yönlendirir. • Fanout : Bir fanout exchange mesajları, yönlendirme anahtarlarına(routing key) bakmaksızın, bütün kuyruklara dağıtır. “Broadcasting” için uygun bir exchange’dir. http://rubybunny.info/articles/exchanges.html
  7. Exchange Türleri • Topic : Bu exchange türünde ise belli

    bir desene uyan mesajlar belirtilen kuyruklarla ilişkilendirilir.
  8. VirtualHost • Vhost sayesinde siz kuyruklarınızı ve “exchange”lerinizi kolayca ayırabilirsiniz

    ve bir kuyruk sunucusunda birden fazla uygulamayı çalıştırabilirsiniz. • RabbitMQ’da kullanıcılara bazı izinler ekleyerek kullanıcıların hangi kuyruklara erişip hangilere erişemeyeceğini belirtebilirsiniz.
  9. Channel • Uygulamanız ya da uygulamalarınız RabbitMQ ile kendi içlerinde

    birden fazla bağlantı açmak isteyebilir. Bu durumda Channel’lar sayesinde bir tek TCP bağlantısı üzerinden birden fazla bağlantı oluşturabilirsiniz. • Channel’lar birbirleri ile birşey paylaşmazlar tamamen ayrılmışlardır.
  10. Kuyruklar • Tüketiciler(Consumer) tarafından alınacak olan mesajlarınızı barındıran yapılardır. •

    Her kuyruğun bir adı vardır ve bazı diğer özellikleri vardır : • Durability : Broker yeniden başlatıldığında mesajların silinip silinmeyeceğine karar verir. Eğer “Durable” ise kalır. “Transient” ise mesajlar silinir. • Auto Delete: Bu özellik ile tüm tüketiciler bağlantılarını kopardığında kuyruk otomatik olarak kendini silecektir. • Bunlar dışında çeşitli argumanlar ile kuyruğunuza bazı özellikler ekleyebilirsiniz: x-message-ttl, x-expires, x-max-length, x-max-length- bytes, … gibi.
  11. Tüketici (Consumer) • Tüketici (Consumer) kuyruktaki mesajları alan ve işleyen

    yapılardır. • Ayrı ayrı uygulamalar da olabilir tek bir uygulama bütün kuyrukları dinliyor da olabilir. • Örnek bir PHP (üretici) producer ve (consumer)tüketici uygulamaya göz atalım.
  12. Bağlantılar Kuyruklarınıza bağlı olan tüketicileri (consumer) burada görebilirsiniz. Detaylı bilgi

    almak için bağlantıya tıklayabilir ve gerektiğinde bağlantıyı koparabilirsiniz.