• Buradasın

    RabbitMQ Kuyruk Sistemi Kapsamlı Eğitimi

    youtube.com/watch?v=AxPwGjYHElU

    Yapay zekadan makale özeti

    • Bu video, bir eğitmen tarafından sunulan RabbitMQ mesajlaşma sistemi kullanımını adım adım gösteren teknik bir eğitim içeriğidir. Eğitmen, Visual Studio ve RabbitMQ konsolu kullanarak pratik uygulamalar oluşturarak konuyu anlatmaktadır.
    • Video, RabbitMQ'nin temel bileşenleri olan exchange, queue ve binding kavramlarını teorik ve uygulamalı olarak ele almaktadır. İçerikte, RabbitMQ'ya bağlantı kurma, exchange ve queue oluşturma, mesaj gönderme ve alma işlemleri, farklı exchange türleri (direct, fanout, topic) ve consumer'ların mesajları nasıl tüketmesi gerektiği gibi konular detaylı olarak anlatılmaktadır.
    • Eğitim, .NET framework ve .NET Core ortamlarında RabbitMQ kullanımı için pratik kod örnekleri sunmaktadır. Ayrıca, e-devlet sistemlerinde kuyruk mekanizmasının kullanımı ve farklı consumer'lar arasında Round Robin yöntemiyle veri paylaşımı gibi konular da ele alınmaktadır. Video yaklaşık 45 dakika sürmekte ve bir sonraki videoda daha gerçekçi bir örnek üzerinden pratik yapılacağı belirtilmektedir.
    00:01RabbitMQ Uygulaması Geliştirme
    • Videoda RabbitMQ'yu bir uygulama üzerinden yönetme işine girilecek ve bir producer ve bir consumer yazılacak.
    • Önceki videoda RabbitMQ'nun teorik olarak ne olduğundan ve hangi alanlarda kullanıldığından bahsedilmiş, bugün bu kavramların pratikte nasıl kullanıldığı gösterilecek.
    • RabbitMQ kurulumu için Docker videosu paylaşılmış, eğer RabbitMQ kurulmuşsa belirtilen ekrana erişilebilir.
    00:58RabbitMQ Temel Kavramları
    • RabbitMQ'de producer ve consumer dışarıdan geliştireceğimiz uygulamalar, RabbitMQ içerisinde exchange'ler ve Q'lar bulunuyor.
    • Root key kullanılarak exchange'ler ve Q'lar bind ediliyor, exchange'ler mesajın hangi Q'ya gideceğine karar veriyor.
    • Producer exchange ile, consumer ise Q ile muhatap oluyor; exchange mesajı hangi Q'lara göndermesi gerektiğine karar veriyor, consumer ise Q'daki mesajları tüketiyor.
    01:41Uygulama Tasarımı
    • Web uygulaması yerine masaüstü uygulaması geliştirilmiş çünkü producer bir Windows application, consumer ise bir konsol application olacak.
    • Uygulamada Q yaratma, exchange yaratma, ikisini birbirine bağlama ve mesaj gönderme işlemleri yapılacak.
    • Uygulama başlatıldığında connect butonuna basıldığında log ekleniyor ve alanlar aktif hale geliyor, disconnect olduğunda pasif oluyor.
    03:41RabbitMQ Arayüzü
    • RabbitMQ'nun arayüzünde giriş yapıldığında overview sayfası karşılıyor, bu sayfa RabbitMQ'nun o anki durumunu gösteriyor.
    • Connections bölümünde client'lar görünecek, channel'lar producer ile consumer arasında mesajları göndermek için kullanılan kanallar.
    • Exchange'ler bölümünde default olarak gelen exchange'ler var, ayrıca Q'lar bölümünde kendi exchange'lerimizi ekleyebileceğiz.
    06:17RabbitMQ Kütüphanesi Kurulumu
    • Proje için RabbitMQ kütüphanesi ve Newtonsoft.Json kütüphanesi NuGet üzerinden kuruluyor.
    • RabbitMQ'ye connect olmak için RabbitMQ'nun içerisinde gelen ConnectionFactory kullanılıyor.
    • ConnectionFactory için URL oluşturuluyor: amqp://kullanıcı:şifre@host:port formatında, RabbitMQ'ya bağlanmak için 15672 portu kullanılıyor.
    08:54RabbitMQ Bağlantısı Oluşturma
    • RabbitMQ bağlantısı için private method olarak "get connection" adında bir fonksiyon oluşturuluyor.
    • Bağlantı açıldığında "is connection open" property'si true oluyor ve butonlar aktif hale geliyor.
    • RabbitMQ'ye bağlantı kurulduğunda, Docker üzerindeki IP ve bağlantı portu görüntüleniyor.
    12:14Exchange ve Kanal Oluşturma
    • RabbitMQ'ya mesaj göndermek için önce bir exchange yaratmak gerekiyor.
    • Kanal, mesaj trafiğini yöneten ve producer'dan consumer'a mesajları ulaştıran bir arayüz oluşturuyor.
    • Kanal, "connection create channel" metodu ile oluşturuluyor ve singleton pattern kullanılarak yönetiliyor.
    16:07Exchange ve Q Oluşturma
    • Exchange, kanal aracılığıyla "channel exchange declare" metodu ile oluşturuluyor.
    • Exchange'in ismi ve tipi (direct, topic, fanout, header) belirtiliyor.
    • Q'lar da kanal aracılığıyla "channel queue declare" metodu ile oluşturuluyor ve RabbitMQ'da görünüyor.
    20:37Exchange ve Q'nun Bağlantısı
    • Exchange'e gelen mesaj hangi Q'ya gideceğini bulmak için root'ları, routing key'leri ve header'ları kullanıyor.
    • Exchange ile Q'yu birbirine bağlamak için bir exchange ve bir Q seçip, bunları bir routing key ile birbirine bağlamak gerekiyor.
    • Direct exchange kullanıldığında, Q'nun keyi Q'nun ismiyle aynı oluyor ve topiclerde patern verebiliyorduk.
    22:28Binding İşlemi
    • Binding işlemi için channel'da Q name, exchange name ve routing key isteniyor.
    • Exchange ve Q birbirine bağlanırken, mesaj gelirken bu key ile karşılaştırılarak hangi Q'ya gönderileceği belirleniyor.
    • Admin panelinde exchange'in altında binding kısmında Q'ların bağlanıp bağlanmadığı görülebiliyor.
    23:24Exchange ve Q Oluşturma
    • Admin panelinde exchange ve Q oluşturulduktan sonra, bunları birbirine bağlamak için binding işlemi yapılıyor.
    • Direct tipindeki exchange'lerde, routing key ne verilirse verilsin, Q ismiyle aynı olmak zorunda.
    • Exchange'e mesaj gönderildiğinde, mesajın routing key'i ile Q'nun key'i eşleşiyorsa mesaj o Q'ya gönderiliyor.
    26:44Mesaj Gönderme İşlemi
    • Exchange ve Q oluşturulup bağlandıktan sonra, exchange'e mesaj göndermek için publish işlemi yapılıyor.
    • Publish işlemi için exchange name, routing key ve data parametreleri kullanılıyor.
    • Gönderilen data önce string'e sonra byte array'e dönüştürülerek karşı tarafa gönderiliyor.
    31:30Test İşlemi
    • Test için bir Q ve exchange oluşturulup bağlandı.
    • Routing key olarak Q'nun adı kullanılıyor çünkü exchange tipi direct.
    • Mesaj gönderildiğinde, Q'ya tıklayarak mesajların geldiği görülebiliyor.
    33:25RabbitMQ Temel Kullanımı
    • RabbitMQ'de exchange ve queue oluşturup bind işlemi yaparak mesajlaşma sistemi oluşturuluyor.
    • Direct exchange kullanılarak mesajlar belirli bir queue'ya gönderilebiliyor.
    • Binding işlemi sırasında routing key belirlenerek mesajların hangi queue'ya gideceği belirleniyor.
    37:08Mesaj Gönderme ve Alma İşlemi
    • Publish işlemi ile mesajlar exchange'e gönderilerek ilgili queue'ya yönlendiriliyor.
    • Queue'da mesajlar depolanıyor ve consume işlemi ile okunabiliyor.
    • Mesajlar alındığında acknowledge işlemi gerçekleşiyor ve mesaj queue'dan siliniyor.
    40:00Farklı Exchange Türleri
    • Fanout exchange tüm bağlı queue'lara aynı mesajı gönderiyor.
    • Topic exchange, routing key'lerdeki pattern'lerle eşleşen queue'lara mesaj gönderiyor.
    • Yıldız (*) karakteri topic exchange'te herhangi bir karakteri temsil ediyor.
    44:55Consumer Uygulaması Oluşturma
    • Producer uygulaması mesajları doğru kanal aracılığıyla exchange ve routing key kullanarak ilgili queue'ya gönderiyor.
    • Consumer uygulaması queue'dan datayı okumakla görevli olacak şekilde oluşturuluyor.
    • Consumer uygulaması için konsol uygulaması oluşturulup RabbitMQ kütüphanesi ekleniyor.
    47:33RabbitMQ Kuyruk Dinleyici Uygulaması
    • Uygulama dışarıdan parametre olarak kuyruk adını alacak şekilde tasarlanıyor.
    • Programın ismi "Konsol App" olarak değiştiriliyor ve konsol uygulaması ile karışmaması için.
    • Dışarıdan gelen ilk parametre "q" olarak kabul ediliyor ve bağlantı bilgisi program içinde sabitleniyor.
    48:55Kuyruk Dinleyici Oluşturma
    • Connection nesnesi oluşturulduktan sonra channel oluşturuluyor.
    • Basic consume metodu kullanılarak kuyruk dinleyicisi oluşturuluyor ve auto-acknowledge true olarak ayarlanıyor.
    • EventingBasicConsumer sınıfı kullanılarak bir olay oluşturuluyor ve channel üzerinden kuyruk dinleyicisi başlatılıyor.
    50:38Mesaj Dinleme ve İşleme
    • Mesaj geldiğinde EventingBasicConsumer'ın Receive metodu tetikleniyor.
    • Gelen mesajın body'si byte dizisinden string'e dönüştürülüyor ve ekrana basılıyor.
    • Kuyruk dinleyicisinin tek işi, gelen mesajı alıp ekrana basmaktır.
    52:40Kuyruk Oluşturma ve Test
    • Kuyrukların silinmemesi için "exclusive" özelliği false olarak ayarlanması gerektiği belirleniyor.
    • Test amacıyla bir kuyruk oluşturuluyor ve direkt exchange ile bağlanıyor.
    • 10 adet test mesajı kuyruğa gönderiliyor.
    55:35Uygulamanın Çalıştırılması
    • Uygulama komut satırından çalıştırılıyor ve kuyruk adı parametre olarak veriliyor.
    • Uygulama kuyruktaki mesajları alıp ekrana basıyor.
    • Uygulamanın kapanmaması için Console.ReadLine() kullanılıyor.
    57:24RabbitMQ Kuyruk Oluşturma ve Dinleme
    • Win formu çalıştırarak ve connect işlemi yaparak RabbitMQ ile bağlantı kuruluyor.
    • "Test Q" kuyruğu bulunmadığı için, consumer tarafından kuyruk oluşturulabilir ve dinleme işlemi başlatılabilir.
    • Kuyruk oluşturulurken "exclusive" özelliği false olarak ayarlanarak, kuyruk yoksa otomatik olarak oluşturulması sağlanıyor.
    58:32Mesaj Gönderme ve Alma İşlemi
    • Desktop uygulaması ve Visual Studio kodu çalıştırılarak, "test Q" kuyruğuna bağlanılıyor.
    • Routing key ile exchange'e mesaj gönderilerek, kuyrukta dinleyen consumer'a mesaj ulaştırılıyor.
    • Gönderilen mesaj anında kuyruğa düşüyor ve consumer tarafından alınarak ekrana basılıyor.
    59:17Performans Testi
    • Birden fazla mesaj gönderildiğinde, RabbitMQ hızlı bir şekilde mesajları işleme alıyor.
    • Exchange, direkt tipinde olduğu için belirtilen kuyruğu bulup mesajları kuyruğa ekliyor.
    • Saniyede 200 mesaja kadar işlem yapabilen sistem, 1000 mesajı da hızlı bir şekilde işliyor.
    1:02:17Acknowledge Ayarı
    • Auto acknowledge true olarak ayarlandığında, mesajlar alınır ve sunucuya bildirilir.
    • False olarak ayarlandığında, mesajlar alınır ancak sunucuya bildirilmez, uygulama kapatılıp tekrar açıldığında mesajlar tekrar gelir.
    • Channel basic ac knowlege metodu ile alınan mesajların sunucuya bildirilmesi sağlanabilir.
    1:06:33Çoklu Consumer
    • Aynı kuyruğu dinleyen birden fazla consumer oluşturulabilir.
    • Her consumer bağlandığında ayrı bir porttan dinleme başlar.
    • Birden fazla consumer durumunda, gönderilen bir mesaj hangi consumer'a düşeceği belirsiz olur.
    1:07:43RabbitMQ Kuyruk Mekanizması
    • RabbitMQ'de kuyruk (queue) mekanizması, verilerin eşit olarak birden fazla consumer arasında paylaştırılmasını sağlıyor.
    • Round-robin yöntemiyle, veriler sırayla her bir consumer'a gönderiliyor; örneğin 1000 veri için 3 consumer varsa yaklaşık 333 veri her birine düşüyor.
    • Bu paylaştırma oranı, consumerların iş hızlarına göre ayarlanabilir; hızlı çalışan bir consumer'a daha fazla veri düşebilir.
    1:11:14Performans Testi
    • 15 veri gönderildiğinde, üç consumer arasında veriler eşit olarak paylaştırılıyor.
    • 1500 veri gönderildiğinde, her bir consumer yaklaşık 500 veri alıyor ve RabbitMQ'nin hızı saniyede 300 veri alabilmektedir.
    • 50.000 veri 4 saniye içinde tüm consumer'lar arasında paylaştırılıyor, bu da consumer sayısı arttıkça iş bölümü de arttığını gösteriyor.
    1:13:33Gerçek Hayat Uygulaması
    • Bir sonraki videoda RabbitMQ'nin daha somut bir örnekle gösterileceği belirtiliyor.
    • E-devlet sistemlerinde döküman işlemlerinde (ikametgah belgesi, askerlik kağıdı, öğrenci belgesi) kuyruk mekanizması kullanılıyor.
    • Kullanıcı verilerini gönderdiğinde, arka tarafta birden fazla consumer bu verileri işleyip dökümanı oluşturuyor ve sonucu kullanıcıya geri gönderiyor.

    Yanıtı değerlendir

  • Yazeka sinir ağı makaleleri veya videoları özetliyor