RabbitMQ
Genel Bakış
Amacı Nedir?
Apinizer içindeki Integration Flow adımlarının AMQP üzerinden güvenilir biçimde mesaj yayınlamasını sağlar
Birden fazla host/port tanımlayarak cluster içindeki brokerlar arasında yüksek erişilebilirlik sağlar
Sanal host ve basic properties alanlarıyla log mesajlarını, telemetriyi veya iş verilerini hedef kuyruğa uygun formatta iletir
İsteğe bağlı Authentication ve SSL/TLS desteğiyle güvenli mesajlaşmayı garanti eder
Çalışma Prensibi
Integration Flow veya Connector içerisinden RabbitMQ Connection bağlantısı talep edildiğinde, sistem yapılandırılmış connection parametrelerini okur
Tanımlı hostPortList'e göre round-robin stratejisiyle broker seçilir, mevcut açık bağlantı yoksa pool'da yeni AMQP bağlantısı oluşturulur
Authentication toggle'ı aktifleştirildiyse kullanıcı adı/şifre ile, SSL/TLS etkinse sertifika zinciri doğrulanarak hedef sisteme kimlik doğrulaması yapılır
AMQP protokolü üzerinden channel açılır, channelExchange ve channelRoutingKey parametreleriyle mesaj yayınlanır; basic properties alanları mesaj meta verisini taşır
İşlem tamamlandıktan sonra bağlantı pool'a geri döner; idle süre aşıldığında otomatik olarak kapatılır
Bağlantı hatası, timeout veya authentication hatası durumunda retry ve fallback host denemesi, uyarı logları ve kullanıcıya detaylı hata mesajı iletilir
Kullanım Alanları
Log, audit ve izleme olaylarının RabbitMQ bazlı merkezi kuyruğa gönderilmesi
Dış sistemlere komut veya event tetiklemek için AMQP topic/queue entegrasyonları
Yüksek hacimli veri işleme pipeline'larında dağıtık mikroservisler arasında mesajlaşma
Üçüncü taraf Message Queue altyapılarına (ör. yönetilen RabbitMQ) güvenli bağlantı
Teknik Özellikler ve Yetenekler
Temel Özellikler
Birden fazla broker adresi eklenerek otomatik failover sağlanır.
connectionFactoryVirtualHost alanı ile tenant bazlı izolasyon desteklenir.
AppId, ContentType, Priority gibi alanlar önceden tanımlanarak mesaj formatı standardize edilir.
Her ortam (Development, Test, Production) için ayrı connection parametreleri tanımlama imkanı.
Connection'ı aktif veya pasif hale getirme (enable/disable toggle). Pasif durumda bağlantı kullanılamaz ancak yapılandırması saklanır.
İleri Düzey Özellikler
Kimlik doğrulama gerekmeyen brokerlarda devre dışı bırakılabilir, gerektiğinde kullanıcı adı/şifre zorunlu olur.
TLS sür ümü serbestçe yazılabilir, self-signed sertifikalar development ortamında test edilebilir.
RequestedChannelMax, RequestedFrameMax ve RequestedHeartbeat değerleri ile broker kapasitesine uyum sağlanır.
"Test Connection" butonu ile bağlantı parametrelerini kaydetmeden önce doğrulama imkanı.
Connection yapılandırmasını ZIP dosyası olarak export etme. Farklı ortamlara (Development, Test, Production) import etme. Versiyon kontrolü ve yedekleme imkanı.
Bağlantı sağlığı, pool durumu ve performans metriklerini izleme.
Connection Parametreleri
Zorunlu Parametreler
Açıklama: Connection adı (benzersiz olmalı)
Örnek Değer: Production_RabbitMQ
Notlar: Boşlukla başlamaz, özel karakterler kullanılmamalı
Açıklama: Her broker için host ve port çifti
Örnek Değer: mq1.internal.local:5672
Notlar: En az bir satır zorunlu; tüm satırlarda host ve port doldurulmalı
Açıklama: AMQP sanal host adı
Örnek Değer: /apinizer
Notlar: RabbitMQ yönetim konsolundaki vhost adıyla eşleşmeli
Açıklama: AMQP bağlantısı kurulana kadar beklenecek süre
Örnek Değer: 60000
Notlar: ms cinsinden; 0 değeri sınırsız bekleme anlamına gelir
Açıklama: Her bağlantı için maksimum channel sayısı
Örnek Değer: 2047
Notlar: Broker limitini aşmamalı
Açıklama: AMQP frame boyutu limiti
Örnek Değer: 0
Notlar: 0 değeri broker varsayılanını kullanır
Açıklama: Broker ile heartbeat aralığı
Örnek Değer: 60
Notlar: Saniye cinsinden; 0 -> heartbeat devre dışı
Açıklama: Mesajın yönlendirileceği queue veya topic anahtarı
Örnek Değer: apinizer.audit.queue
Notlar: Queue adıyla aynı tutulması önerilir
Açıklama: Mesajı oluşturan uygulama kimliği
Örnek Değer: apinizer
Notlar: API loglarında izlenebilir
Açıklama: Mesaj gövde formatı
Örnek Değer: application/json
Notlar: application/xml vb. değerler desteklenir
Açıklama: İçerik karakter seti
Örnek Değer: UTF-8
Notlar: Broker ve tüketici aynı encoding'i kullanmalı
Açıklama: 1 (geçici) veya 2 (kalıcı) teslim modu
Örnek Değer: 2
Notlar: Kalıcılık için 2 seçilmelidir
Açıklama: Mesaj önceliği (0-9)
Örnek Değer: 5
Notlar: Kuyruk önceliği etkin olmalıdır
Açıklama: Yanıtın döneceği queue
Örnek Değer: apinizer.reply
Notlar: Request/Reply desenlerinde zorunlu
Açıklama: Mesajın TTL değeri (ms)
Örnek Değer: 60000
Notlar: Kuyruk politikasını aşmamalı
Açıklama: Mesaj tipini tanımlar
Örnek Değer: apinizer-log-type
Notlar: Tüketicide filtreleme için kullanılır
Açıklama: RabbitMQ kullanıcı kimliği
Örnek Değer: guest
Notlar: Authentication etkinse broker doğrular
Açıklama: Broker cluster kimliği
Örnek Değer: cluster-eu-central
Notlar: Cluster izlenebilirlik raporlarında kullanılır
İsteğe Bağlı Parametreler
Açıklama: Connection amacı hakkında açıklama
Varsayılan Değer: -
Önerilen Değer: Süreç veya proje adını belirtin
Açıklama: Mesajın yayınlanacağı exchange adı
Varsayılan Değer: ""
Önerilen Değer: apinizer.audit.exchange
Açıklama: Kimlik doğrulama gerekliliği toggle'ı
Varsayılan Değer: false
Önerilen Değer: Production ortamında true
Açıklama: Authentication etkinse kullanıcı adı
Varsayılan Değer: guest
Önerilen Değer: Ayrı bir servis hesabı kullanın
Açıklama: Kullanıcı için şifre
Varsayılan Değer: guest
Önerilen Değer: Secret Manager üzerinden yönetilen güçlü parola
Açıklama: SSL/TLS kullanım durumu
Varsayılan Değer: false
Önerilen Değer: Production'da true
Açıklama: Kullanılacak TLS sürümü
Varsayılan Değer: TLSv1.2
Önerilen Değer: Broker desteğine göre TLSv1.3
Açıklama: Exchange ile routing key ilişkisi notu
Varsayılan Değer: -
Önerilen Değer: Ortam bazlı tablo tutun
Timeout ve Connection Pool Parametreleri
Açıklama: Bağlantı kurulması için maksimum bekleme süresi
Varsayılan: 60000 ms
Min: 1000 ms | Max: 300000 ms
Açıklama: Mesaj gönderiminin yanıt bekleme süresi
Varsayılan: 30000 ms
Min: 5000 ms | Max: 120000 ms
Açıklama: Connection pool'daki maksimum bağlantı sayısı
Varsayılan: 10
Min: 1 | Max: 100
Açıklama: Broker ile heartbeat süresi
Varsayılan: 60 saniye
Min: 0 | Max: 300 saniye
Kullanım Senaryoları
Durum: Gateway loglarını merkezi kuyruğa aktarma
Çözüm: channelRoutingKey=apinizer.logs, deliveryMode=2
Beklenen Sonuç: Tüm log mesajları kalıcı kuyrukta toplanır
Durum: Yetkili işlemleri izleme
Çözüm: basicPropertiesType=audit, SSL aktif
Beklenen Sonuç: Güvenli audit mesajları tüketici servise ulaşır
Durum: Birden fazla tüketiciye yayımlama
Çözüm: channelExchange=apinizer.events, topic exchange
Beklenen Sonuç: Tüm aboneler routing key desenine göre mesaj alır
Durum: Bir broker düştüğünde süreklilik
Çözüm: hostPortList'e en az 3 node ekleme
Beklenen Sonuç: Bağlantı otomatik olarak diğer node'a geçer
Durum: Zamana duyarlı görevler
Çözüm: basicPropertiesExpiration=120000, priority düşürme
Beklenen Sonuç: Mesajlar 2 dakika sonra otomatik silinir
Durum: Hızlı komut iletimi
Çözüm: connectionFactoryRequestedHeartbeat=30, pool size=20
Beklenen Sonuç: Gecikme azalır, throughput artar
Connection Yapılandırma
Yeni RabbitMQ Bağlantısı Oluşturma
Sol menüden Connection → RabbitMQ Bağlantısı bölümüne gidin.
Sağ üstteki [+ Create] butonuna tıklayın.
Enable Status (Aktif Durumu): Toggle ile aktif/pasif durumu ayarlayın. Yeni connection'lar varsayılan olarak aktiftir.
Name (İsim) Zorunlu:
Örnek: Production_RabbitMQ
- Benzersiz isim girin, boşlukla başlamaz.
- Sistem otomatik kontrol eder. Yeşil tik: kullanılabilir. Kırmızı çarpı: mevcut isim.
Description (Açıklama):
Örnek: "RabbitMQ log publishing connection"
- Maks. 1000 karakter.
- Connection'ın amacını açıklayın.
Sayfanın üst kısmındaki işlem butonları alanında, [<> Variable] butonunu kullanarak dinamik değer seçebilir, Global variable ifadeleri sayesinde connection parametrelerini sabit değer yerine değişken tabanlı yönetebilirsiniz. Detaylı bilgi için Dinamik Değişkenler sayfasını inceleyebilirsiniz.
Dropdown menüden ortam seçin: Development, Test, veya Production.
Her ortam için farklı connection parametreleri tanımlanabilir.
Add Host butonuyla broker adresleri ekleyin.
Her satırda host ve port alanları dolu olmalıdır.
Connection Factory Virtual Host alanına broker'daki vhost değerini yazın.
Channel Exchange değerini (varsa) girin.
Channel Routing Key, Basic Properties alanlarını RabbitMQ tüketici gereksinimlerine göre doldurun.
Teslim modunu (1/2) ve önceliği belirleyin.
Connection Timeout, Requested Frame/Channel Max, Requested Heartbeat alanlarını trafik hacmine göre ayarlayın.
Kurumsal standartlara göre Pool Size yönetim ekranından güncellenir.
Authentication Enabled toggle'ını aktif edin.
Username/Password alanlarını doldurun.
SSL gerekiyorsa Use SSL Protocol toggle'ını açın ve TLS sürümünü belirtin.
[Test Connection] butonuna tıklayın.
Bağlantı parametrelerinin doğru olup olmadığını test edin.
Başarılı: Yeşil onay mesajı, Başarısız: Hata detayları gösterilir.
Sağ üstteki [Save and Deploy] butonuna tıklayın.
Kontrol Listesi: Benzersiz isim. Zorunlu alanlar dolu. Test connection başarılı (önerilir)
Sonuç:
-
Connection listeye eklenir.
-
Integration Flow ve Connector adımlarında kullanılabilir hale gelir.
-
Ortama göre aktif olur.
ipucu
Connection başarıyla oluşturuldu! Artık Integration Flow ve Connector adımlarında kullanabilirsiniz.
:::
Connection'ı Silme
Connection'ı silmek için:
- Connection listesinde satır sonundaki ⋮ menüsünden Delete seçeneğini tıklayın.
- Onay dialogunda silme işlemini onaylayın.
Silmeden Önce Kontrol Edin:
- Integration Flow veya Connector adımlarında kullanılıyor olabilir.
- Gerekirse alternatif bir connection atayın.
- Silmeden önce Export ile yedek alın.
- Silmek yerine connection'ın aktif durumunu pasif hale getirin.
- Connection pasif olur ancak silinmez.
- Gerektiğinde aktif hale getirerek yeniden kullanabilirsiniz.