Genel Bakış
Amacı Nedir?
Amacı Nedir?
Merkezi Yönetim
Connection (Bağlantı), ActiveMQ broker’larına güvenilir erişim sağlayarak mesaj gönderme ve alma işlemlerini merkezileştirir.
Yeniden Kullanılabilirlik
Farklı Integration Flow adımlarında yeniden kullanılabilir bağlantı parametreleri sunarak yapılandırma tekrarını ortadan kaldırır.
Ortam Bazlı Yönetim
Ortam bazlı yönetimle Development, Test ve Production arasında tutarlı dağıtım (Deployment) süreçleri sağlar.
Performans ve Dayanıklılık
Gelişmiş timeout ve pool yönetimi sayesinde yüksek trafikli senaryolarda performans ve dayanıklılık kazandırır.
Çalışma Prensibi
Çalışma Prensibi
Bağlantı Başlatma
Integration Flow veya Connector içerisinden Message Queue bağlantısı talep edildiğinde, sistem yapılandırılmış connection parametrelerini okur.
Connection Pool Yönetimi
Aktif connection pool stratejisiyle önceden açılmış bağlantılar yeniden kullanılır; pool doluysa yeni connection oluşturulur.
Kimlik Doğrulama
Temel Authentication mekanizmasıyla (kullanıcı adı/şifre) veya opsiyonel SSL/TLS sertifika doğrulamasıyla broker’a kimlik doğrulaması yapılır.
Veri İletişimi
AMQP/TCP protokolü üzerinden Queue veya Topic hedefine JMS mesajları senkron/asenkron olarak iletilir ya da tüketilir.
Bağlantı Yönetimi
İşlem tamamlandığında bağlantı pool’a geri döner; pasif bağlantılar pool politikalarına göre kapatılır.
Hata Yönetimi
Bağlantı hatası, timeout veya authentication hatası durumunda hata ayrıntıları loglanır sistem otomatik yeniden deneme ve kullanıcıya uyarı mesajı üretir.
Kullanım Alanları
Kullanım Alanları
Asenkron Mesaj Kuyruğu
Uygulama bileşenlerinin ActiveMQ üzerinden asenkron mesaj kuyruğu işlemleri yürütmesi.
Güvenilir Mesaj Yayını
Queue veya Topic tabanlı entegrasyonlarda güvenilir mesaj yayını ve tüketimi.
Yüksek Hacimli Mesaj Senaryoları
İş zekâsı, bildirim veya entegrasyon servislerinde yüksek hacimli mesaj senaryoları.
Mikroservisler Arası İletişim
Mikroservisler arası iletişimde AMQP tabanlı olay paylaşımı.
Legacy JMS Entegrasyonu
Legacy JMS uygulamalarını modern Integration Flow adımlarına dahil etme.
Teknik Özellikler ve Yetenekler
Temel Özellikler
Protokol Esnekliği: AMQP veya TCP protokolü seçimiyle farklı ActiveMQ dağıtımlarına uygun bağlantı sağlar. Destination Yönetimi: Queue veya Topic destinasyonlarını tek ekran üzerinden yönetir, gerekli kimlik bilgileriyle birlikte saklar. Oturum Onayı Politikası: AUTO_ACKNOWLEDGE varsayılanı ile hızlı entegrasyon; CLIENT_ACKNOWLEDGE veya TRANSACTED ile gelişmiş kontrol sunar. Ortam Bazlı Yapılandırma: Her ortam (Development, Test, Production) için ayrı connection parametreleri tanımlama imkanı. Enable/Disable Kontrolü: 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
Timeout Yönetimi: Bağlanma, istek yanıtlama ve mesaj gönderme süreleri milisaniye cinsinden hassas ayarlanabilir. İçerik Özelleştirme: Content-Type ve Content-Encoding alanlarıyla mesaj meta verisi standartlaştırılır. Client ID Tanımlama: JMS ClientID desteği sayesinde kalıcı abonelik veya dayanıklı tüketici senaryoları mümkün olur. Connection Test Özelliği: “Test Connection” butonu ile bağlantı parametrelerini kaydetmeden önce doğrulama imkanı. Export/Import Özelliği: Connection yapılandırmasını ZIP dosyası olarak export etme. Farklı ortamlara (Development, Test, Production) import etme. Versiyon kontrolü ve yedekleme imkanı. Connection Monitoring: Bağlantı sağlığı, pool durumu ve performans metriklerini izleme.Connection Parametreleri
Zorunlu Parametreler
Zorunlu Parametreler
Name
Açıklama: Connection adı (benzersiz olmalı)
Örnek Değer:
Notlar: Boşlukla başlamaz, özel karakterler kullanılmamalı
Örnek Değer:
Production_ActiveMQNotlar: Boşlukla başlamaz, özel karakterler kullanılmamalı
Broker URL
Açıklama: ActiveMQ broker erişim adresi
Örnek Değer:
Notlar: Protokol (amqp/tcp) ve port değerini içerir
Örnek Değer:
tcp://mq.prod.local:61616Notlar: Protokol (amqp/tcp) ve port değerini içerir
Username
Açıklama: ActiveMQ erişim kullanıcı adı
Örnek Değer:
Notlar: Yetkilendirilmiş hesap kullanılmalı
Örnek Değer:
mq_service_userNotlar: Yetkilendirilmiş hesap kullanılmalı
Password
Açıklama: Kullanıcıya ait şifre
Örnek Değer:
Notlar: Şifre saklama için secret manager kullanılmalı
Örnek Değer:
********Notlar: Şifre saklama için secret manager kullanılmalı
Destination Type
Açıklama: Queue veya Topic seçimi
Örnek Değer:
Notlar: Enum değerleri: QUEUE, TOPIC
Örnek Değer:
QUEUENotlar: Enum değerleri: QUEUE, TOPIC
Destination Name
Açıklama: Mesaj kuyruğu veya topic adı
Örnek Değer:
Notlar: Namespace kuralına uyulmalı
Örnek Değer:
order.events.queueNotlar: Namespace kuralına uyulmalı
ActiveMQ Connection Protocol Type
Açıklama: Kullanılacak bağlantı protokolü
Örnek Değer:
Notlar: Enum değerleri: AMQP, TCP
Örnek Değer:
AMQPNotlar: Enum değerleri: AMQP, TCP
Session Acknowledgement
Açıklama: JMS oturum onay tipi
Örnek Değer:
Notlar: Enum değerleri: AUTO_ACKNOWLEDGE, CLIENT_ACKNOWLEDGE, SESSION_TRANSACTED, DUPS_OK_ACKNOWLEDGE
Örnek Değer:
AUTO_ACKNOWLEDGENotlar: Enum değerleri: AUTO_ACKNOWLEDGE, CLIENT_ACKNOWLEDGE, SESSION_TRANSACTED, DUPS_OK_ACKNOWLEDGE
Environment Id
Açıklama: Ortam seçimi referansı
Örnek Değer:
Notlar: Ortam listesi Environment servisinden gelir
Örnek Değer:
env-prod-01Notlar: Ortam listesi Environment servisinden gelir
İsteğe Bağlı Parametreler
İsteğe Bağlı Parametreler
Send Timeout
Açıklama: Mesaj gönderimi için bekleme süresi
Varsayılan Değer: 60000
Önerilen Değer: 30000 - 120000 aralığında ihtiyaca göre
Varsayılan Değer: 60000
Önerilen Değer: 30000 - 120000 aralığında ihtiyaca göre
Request Timeout
Açıklama: Yanıt bekleme süresi
Varsayılan Değer: 60000
Önerilen Değer: Kritik işlemler için 45000
Varsayılan Değer: 60000
Önerilen Değer: Kritik işlemler için 45000
Close Timeout
Açıklama: Bağlantıyı kapatma süresi
Varsayılan Değer: 60000
Önerilen Değer: Uzun oturumlar için 90000
Varsayılan Değer: 60000
Önerilen Değer: Uzun oturumlar için 90000
Connect Timeout
Açıklama: Broker’a bağlanma süresi
Varsayılan Değer: 60000
Önerilen Değer: Yüksek gecikmeli ağlarda 90000 ms
Varsayılan Değer: 60000
Önerilen Değer: Yüksek gecikmeli ağlarda 90000 ms
Content Type
Açıklama: Mesaj içerik tipi
Varsayılan Değer: application/json
Önerilen Değer: İş yüküne göre application/xml
Varsayılan Değer: application/json
Önerilen Değer: İş yüküne göre application/xml
Content Encoding
Açıklama: Mesaj karakter seti
Varsayılan Değer: UTF-8
Önerilen Değer: Standart UTF-8 kullanımı önerilir
Varsayılan Değer: UTF-8
Önerilen Değer: Standart UTF-8 kullanımı önerilir
Client ID
Açıklama: Kalıcı abonelik kimliği
Varsayılan Değer: durable-consumer-1
Önerilen Değer: Durable topic aboneliklerinde zorunlu
Varsayılan Değer: durable-consumer-1
Önerilen Değer: Durable topic aboneliklerinde zorunlu
Timeout ve Connection Pool Parametreleri
Connection Timeout
Açıklama: Bağlantı kurulması için maksimum bekleme süresi
Varsayılan: 60000
Min: 1000 | Max: 180000
Birim: milisaniye
Varsayılan: 60000
Min: 1000 | Max: 180000
Birim: milisaniye
Request Timeout
Açıklama: İstek yanıtı için maksimum bekleme süresi
Varsayılan: 60000
Min: 1000 | Max: 180000
Birim: milisaniye
Varsayılan: 60000
Min: 1000 | Max: 180000
Birim: milisaniye
Pool Size
Açıklama: Connection pool’daki maksimum bağlantı sayısı
Varsayılan: 10
Min: 1 | Max: 200
Birim: adet
Varsayılan: 10
Min: 1 | Max: 200
Birim: adet
Send Timeout
Açıklama: Mesaj gönderiminin en uzun sürmesi beklenen süre
Varsayılan: 60000
Min: 5000 | Max: 180000
Birim: milisaniye
Varsayılan: 60000
Min: 5000 | Max: 180000
Birim: milisaniye
Kullanım Senaryoları
Sipariş Kuyruğu Tüketimi
Durum: Yeni sipariş mesajları ActiveMQ kuyruğuna düşüyor
Çözüm: Destination Type=QUEUE, Destination Name=order.events.queue, Protocol=AMQP
Beklenen Davranış: Integration Flow sipariş mesajlarını sıralı tüketir
Çözüm: Destination Type=QUEUE, Destination Name=order.events.queue, Protocol=AMQP
Beklenen Davranış: Integration Flow sipariş mesajlarını sıralı tüketir
Canlı Bildirim Yayını
Durum: Websocket bildirimleri topic üzerinden dağıtılacak
Çözüm: Destination Type=TOPIC, Destination Name=notifications.topic, ClientID=notif-producer
Beklenen Davranış: Tüm aboneler gerçek zamanlı bildirim alır
Çözüm: Destination Type=TOPIC, Destination Name=notifications.topic, ClientID=notif-producer
Beklenen Davranış: Tüm aboneler gerçek zamanlı bildirim alır
Yüksek Güvenlikli Broker
Durum: Production broker sadece SSL kabul ediyor
Çözüm: Protocol=TCP, Broker URL=ssl://mq.prod.local:61617, SSL sertifika ekleri
Beklenen Davranış: Şifreli bağlantı başarılı kurulur
Çözüm: Protocol=TCP, Broker URL=ssl://mq.prod.local:61617, SSL sertifika ekleri
Beklenen Davranış: Şifreli bağlantı başarılı kurulur
Uzun Süreli İşlem
Durum: Batch job büyük mesaj paketleri gönderiyor
Çözüm: Send Timeout=120000, Request Timeout=120000, Pool Size=30
Beklenen Davranış: Mesaj gönderimi kesintisiz tamamlanır
Çözüm: Send Timeout=120000, Request Timeout=120000, Pool Size=30
Beklenen Davranış: Mesaj gönderimi kesintisiz tamamlanır
Test Ortamı Simülasyonu
Durum: Test broker düşük kaynaklı
Çözüm: Pool Size=5, Request Timeout=45000, Content Type=application/json
Beklenen Davranış: Kaynak kullanımı optimize edilir, test stabil çalışır
Çözüm: Pool Size=5, Request Timeout=45000, Content Type=application/json
Beklenen Davranış: Kaynak kullanımı optimize edilir, test stabil çalışır
Disaster Recovery
Durum: Yedek broker’a geçiş gerekliliği
Çözüm: Broker URL ikincil adrese güncellenir, Enable toggle ile aktif edilir
Beklenen Davranış: Trafik kesintisiz şekilde yedek broker’a kayar
Çözüm: Broker URL ikincil adrese güncellenir, Enable toggle ile aktif edilir
Beklenen Davranış: Trafik kesintisiz şekilde yedek broker’a kayar
Connection Yapılandırma
Yeni Apache ActiveMQ Oluşturma

Yapılandırma Adımları
1
Oluşturma Sayfasına Gitme
- Sol menüden Connection → Apache ActiveMQ bölümüne gidin.
- Sağ üstteki [+ Create] butonuna tıklayın.
2
Temel Bilgileri Girme
Enable Status (Aktif Durumu):Toggle ile aktif/pasif durumu ayarlayın. Yeni connection’lar varsayılan olarak aktiftir.Name (İsim) Zorunlu:Örnek:
Production_ActiveMQ- Benzersiz isim girin, boşlukla başlamaz.
- Sistem otomatik kontrol eder. Yeşil tik: kullanılabilir. Kırmızı çarpı: mevcut isim.
- Maks. 1000 karakter.
- Connection’ın amacını açıklayın.
3
Environment (Ortam) Seçimi
- Dropdown menüden ortam seçin: Development, Test, veya Production.
- Her ortam için farklı connection parametreleri tanımlanabilir.
4
ActiveMQ Temel Parametreleri
- Broker URL, ActiveMQ Connection Protocol Type, Destination Type, Destination Name alanlarını girin.
- Broker URL’si AMQP/TCP şemasına uygun olmalı; destinasyon tipi Queue veya Topic olarak seçilmelidir.
5
Mesajlaşma Oturumu ve İçerik Ayarları
- Session Acknowledgement tipini JMS stratejinize göre belirleyin. Opsiyonel olarak Content Type, Content Encoding, Client ID alanlarını doldurun.
- Durable topic aboneliklerinde Client ID gereklidir.
6
Timeout ve Connection Pool Ayarları
- Send Timeout, Request Timeout, Connect Timeout, Close Timeout değerlerini milisaniye olarak girin.
- Yoğun trafik için pool boyutlarını ve süreleri optimize edin.
7
Güvenlik ve Authentication Ayarları
- Username ve Password alanlarını doldurun. SSL/TLS gereksinimleri varsa broker URL’sini ssl:// ile yapılandırın ve gerekli sertifikaları Environment deposuna ekleyin.
8
Test Connection
- [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.
9
Kaydetme
- Sağ üstteki [Save and Deploy] butonuna tıklayın.
- Benzersiz isim
- Zorunlu alanlar dolu
- Test connection başarılı (önerilir)
- Connection listeye eklenir.
- Integration Flow ve Connector adımlarında kullanılabilir hale gelir.
- Ortama göre aktif olur.
Connection’ı Silme
Connection’ı silmek için:Yöntem 1: View Ekranından
- Connection’ın view ekranına gidin.
- Sağ üstteki [Delete] butonuna tıklayın.
- Onay dialogunda silme işlemini onaylayın.
Yöntem 2: Liste Ekranından
- Connection listesinde satır sonundaki ⋮ menüsünden Delete seçeneğini tıklayın.
- Onay dialogunda silme işlemini onaylayın.
Silme İpuçları
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.
Alternatif: Deaktif Etme
- Silmek yerine view ekranından [Disabled] butonunu kullanın.
- Connection pasif olur ancak silinmez.
- Gerektiğinde [Enabled] butonu ile yeniden etkinleştirilebilir.
Connection’ı Dışa/İçe Aktarma
Bu adımda kullanıcı, mevcut connection’ları yedekleme, farklı ortamlara taşıma veya paylaşma amacıyla dışa aktarabilir (export) ya da daha önce dışa aktarılmış bir connection’ı tekrar içe aktarabilir (import). Bu işlem, sürüm yönetimi, test ve üretim ortamları arasında geçiş veya ekipler arası paylaşım süreçlerinde veri bütünlüğünü korumak için kullanılır.
Dışa Aktarma (Export)
Dışa Aktarma (Export)
Yöntem 1: View Ekranından
- Connection’ın view ekranına gidin.
- Sağ üstteki [Export] butonuna tıklayın.
- ZIP dosyası otomatik olarak indirilir.
Yöntem 2: Liste Ekranından
- Connection listesinde satır sonundaki ⋮ menüsünden Export seçeneğini tıklayın.
- ZIP dosyası otomatik olarak indirilir.
Dosya Formatı
Format:
Örnek:
{Date}-activemq-integration-{ConnectionName}-export.zipÖrnek:
13 Nov 2025-activemq-integration-Production_ActiveMQ-export.zipZIP İçeriği
- Connection JSON dosyası
- Metadata bilgileri
- Bağımlılık bilgileri (örneğin sertifikalar, key store)
Kullanım Alanları
- Yedekleme
- Ortamlar arası taşıma (Test → Prod)
- Versiyonlama
- Ekip veya proje bazlı paylaşım
İçe Aktarma (Import)
İçe Aktarma (Import)
İçe Aktarma Adımları
- Ana listede [Import Apache ActiveMQ] butonuna tıklayın.
- İndirilen ZIP dosyasını seçin.
- Sistem kontrolleri: Format geçerli mi? İsim çakışması var mı? Bağımlılıklar mevcut mu?
- Ardından [Import] butonuna tıklayın.
İçe Aktarma Senaryoları
Senaryo 1: İsim Çakışması → Eski connection’ın üzerine yazın veya yeni bir isimle oluşturun.Senaryo 2: Eksik Bağımlılıklar → Eksik sertifikaları veya key store’ları önce oluşturun veya import sırasında çıkarın.
Connection’ın Kullanım Alanları
Connection Oluşturma ve Aktif Etme
Adımlar:
- Connection’ı oluşturun.
- Test Connection ile bağlantıyı doğrulayın.
- Save and Deploy ile kaydedin ve etkinleştirin.
- Connection’ın Enabled durumda olduğundan emin olun.
- View ekranından connection bilgilerini görüntüleyebilirsiniz.
Connection Görüntüleme ve Yönetim
- View ekranından connection’ın tüm yapılandırma bilgilerini görüntüleyebilirsiniz.
- View ekranından Edit, Enable/Disable, Delete ve Export işlemlerini gerçekleştirebilirsiniz.
- Connection durumunu anlık olarak kontrol edebilirsiniz.
Integration / Connector Adımlarında Kullanım
- Mesaj kuyruğu (queue), topic, e-posta, FTP/SFTP, LDAP veya benzeri dış sistemlerle iletişim isteyen adımlarda connection seçilir.
- Örnek: “Send Message”, “Consume Message”, “Upload File”, “Read Directory” gibi adımlar.
- Bağlantı seçimi bu adımların yapılandırmasında yer alan Connection alanından yapılır.
Scheduled Job Kullanımı
- Zamanlanmış görevlerde (ör. belirli aralıklarla mesaj gönderme, dosya işleme vb.) bağlantı seçilerek dış sistemlere erişim sağlanır.
- Connection değiştiğinde, job çalışma davranışı da buna göre güncellenir.
Test Amaçlı Kullanım
- Connection Test özelliği ile bağlantının doğruluğu Integration Flow’dan bağımsız olarak kontrol edilebilir.
- Bu test hata ayıklama sürecinde kritik önem taşır.
- View ekranından connection bilgilerini kontrol ederek test sonuçlarını doğrulayabilirsiniz.
Connection Durum Yönetimi
- View ekranından Enable/Disable butonları ile connection durumunu hızlıca değiştirebilirsiniz.
- Pasif connection’lar Integration Flow’larda kullanılamaz.
- Durum değişiklikleri anında uygulanır ve connection listesinde görüntülenir.
Best Practices
Yapılması Gerekenler ve En İyi Uygulamalar
| Kategori | Açıklama / Öneriler |
|---|---|
| Destinasyon Yönetimi | Kötü: Tüm iş yüklerini tek kuyruğa yönlendirmek. İyi: Farklı iş türleri için ayrı Queue/Topic tanımlamak. En İyi: Her iş tipi için kendi destinasyonunu kullanmak ve adlandırma standartlarını belgelemek. |
| Protokol Seçimi | Kötü: Varsayılan TCP kullanıp güvenlik gereksinimlerini göz ardı etmek. İyi: İç ağda TCP, dış ağda AMQP tercih etmek. En İyi: SSL/TLS destekli AMQP kullanarak şifreli iletişim sağlamak |
| Oturum Onayı Politikası | Kötü: Tüm akışlarda AUTO_ACKNOWLEDGE kullanmak. İyi: Kritik işlemlerde CLIENT_ACKNOWLEDGE’e geçmek. En İyi: Transactional akışlarda SESSION_TRANSACTED kullanıp başarısızlıkta rollback uygulamak. |
| Kimlik Bilgisi Yönetimi | Kötü: Kullanıcı adı/şifreyi düz metin olarak saklamak. İyi: Konfigürasyon dosyasında maskelemek. En İyi: Secret Manager veya environment variable üzerinden dinamik olarak çekmek. |
| Gözlemlenebilirlik | Kötü: Connection loglarını takip etmemek. İyi: Temel hata loglarını izlemek. En İyi: Pool, timeout ve broker metriklerini merkezi izleme sistemine göndermek. |
| Ortam Yönetimi | Kötü: Tüm ortamlarda aynı connection parametrelerini kullanmak. İyi: Her ortam için ayrı connection oluşturmak. En İyi: Environment seçeneğini kullanarak tek connection’da tüm ortamları yönetmek, ortamlar arası geçişte sadece environment değiştirmek. |
| Connection Test | Kötü: Connection’ı test etmeden kaydetmek ve deploy etmek. İyi: Kaydetmeden önce Test Connection ile doğrulamak. En İyi: Her parametre değişikliğinden sonra test etmek, production’a geçmeden önce test ortamında tam entegrasyon testi yapmak. |
Güvenlik En İyi Uygulamaları
| Güvenlik Alanı | Açıklama / Uyarılar |
|---|---|
| Broker Erişim Yetkisi | Sadece ihtiyaç duyan servis hesaplarına izin verin. Role tabanlı politikalar uygulayın ve gereksiz kullanıcıları kaldırın. |
| Şifre Yönetimi | Parolaları periyodik olarak yenileyin, minimum 16 karakter kullanın, yetkisiz paylaşımı engellemek için audit loglarını aktive edin. |
| Durable Subscriber Koruması | Client ID’leri benzersiz tutun, aynı kimliği birden fazla uygulamada kullanmayın; aksi takdirde mesaj kaybı oluşabilir. |
| Kimlik Bilgileri Yönetimi | Kullanıcı adı ve şifre gibi hassas bilgileri environment variable veya secret manager kullanarak saklayın. Kimlik bilgilerini kod veya konfigürasyon dosyalarına hardcode etmeyin. Periyodik olarak şifreleri güncelleyin. |
| SSL/TLS Kullanımı | Production ortamında mutlaka SSL/TLS aktif edin. Self-signed sertifikalar sadece development ortamında kullanın. Sertifika expiration tarihlerini takip edin ve zamanında yenileyin. |
| Erişim Kontrolü | Connection yapılandırmasını sadece yetkili kullanıcıların değiştirmesine izin verin. Connection değişiklik loglarını saklayın. Kritik connection’lar için değişiklik approval süreci uygulayın. |
Kaçınılması Gerekenler
| Kategori | Açıklama / Uyarılar |
|---|---|
| Yanlış Destinasyon Adı | Neden kaçınılmalı: Broker hedefi bulunamaz, mesaj kaybolur. Alternatif: Destinasyon adlarını deployment pipeline’da doğrulayın. |
| Aşırı Pool Boyutu | Neden kaçınılmalı: Broker tarafında kaynak tüketimi artar. Alternatif: Trafiğe göre ölçümlenmiş pool boyutları belirleyin. |
| Standart Dışı Encoding | Neden kaçınılmalı: Tüketiciler mesajı çözemeyebilir. Alternatif: UTF-8 standardını koruyun, farklı encoding gerekirse koordinasyon sağlayın. |
| Production Connection’ı Test Ortamında Kullanma | Neden kaçınılmalı: Test verileri production sistemine yazılabilir, gerçek kullanıcılar etkilenebilir, güvenlik riski oluşur. Alternatif: Her ortam için ayrı connection oluşturun, environment parametresini kullanın, connection isimlerini ortama göre prefix ekleyerek ayırın (Test_, Prod_). |
| Çok Düşük Timeout Değerleri | Neden kaçınılmalı: Ağ gecikmelerinde connection sürekli timeout olur, istekler başarısız olur. Alternatif: Gerçek kullanım senaryolarına göre timeout değerlerini ayarlayın, network latency’yi ölçün ve timeout’ları buna göre belirleyin. |
| Connection Pool Kullanmama | Neden kaçınılmalı: Her istekte yeni bağlantı açılır, performans düşer, kaynak tüketimi artar, hedef sistem yükü artar. Alternatif: Connection pool aktif edin, pool size’ı trafik hacmine göre ayarlayın, pool monitoring kurun. |
Performans İpuçları
| Kriter | Öneri / Etki |
|---|---|
| Broker Cluster Entegrasyonu | Öneri: Failover URI yapısını (failover:(tcp://node1:61616,tcp://node2:61616)) kullanın. Etki: Broker kesintilerinde otomatik yeniden bağlanma sağlanır. |
| Message Throughput | Öneri: Yüksek hacimli gönderimlerde Send Timeout ve Pool Size değerlerini artırın. Etki: Mesaj kuyrukları birikmeden tüketilir. |
| Ack Stratejisi | Öneri: Kritik akışlarda CLIENT_ACKNOWLEDGE ile manuel kontrol sağlayın. Etki: Mesaj kaybı riskini azaltır. |
| Connection Pool Optimizasyonu | Öneri: Pool size’ı peak trafiğe göre ayarlayın (önerilen: eşzamanlı istek sayısı × 1.5), idle connection timeout’ları belirleyin, pool health check yapın. Etki: Bağlantı açma maliyeti %80 azalır, yanıt süreleri düşer, kaynak kullanımı optimize edilir. |
| Timeout Değerleri Optimizasyonu | Öneri: Gerçek network latency’yi ölçün, timeout değerlerini buna göre ayarlayın, çok düşük veya çok yüksek timeout’lardan kaçının. Etki: Gereksiz beklemeler önlenir, hızlı fail-over sağlanır, kullanıcı deneyimi iyileşir. |
| Connection Monitoring | Öneri: Connection pool kullanımını izleyin, timeout oranlarını takip edin, connection health check yapın, alerting kurun. Etki: Sorunlar proaktif tespit edilir, performans darboğazları erken belirlenir, kesinti süresi azalır. |
Sorun Giderme (Troubleshooting)
| Problem | Olası Nedenler | Çözüm Adımları |
|---|---|---|
| Broker’a Bağlanılamıyor | - Yanlış Broker URL - Güvenlik duvarı engeli - Broker servisi kapalı | 1. Broker URL ve port doğrulayın 2. Ağ erişimini test edin (telnet, nc) 3. Broker loglarını kontrol edin |
| Destination Bulunamadı | - Queue/topic oluşturulmamış - Yanlış isim girilmiş - Yetki eksik | 1. Broker yönetim konsolundan destinasyonu doğrulayın 2. Connection parametresini güncelleyin 3. Kullanıcı yetkilerini kontrol edin |
| Connection Timeout | - Network gecikmesi - Hedef sistem yavaş yanıt veriyor - Timeout değeri çok düşük | 1. Network connectivity kontrol edin 2. Hedef sistem sağlığını kontrol edin 3. Timeout değerlerini artırın 4. Connection loglarını inceleyin |
| Authentication Failed | - Yanlış kullanıcı adı/şifre - Expired credentials - Yetki problemi | 1. Kimlik bilgilerini doğrulayın 2. Hedef sistemde kullanıcının aktif olduğunu kontrol edin 3. Gerekli yetkilerin verildiğini kontrol edin 4. SSL/TLS sertifikalarını kontrol edin |
| Pool Exhausted | - Pool size çok düşük - Connection leak var - Trafik çok yüksek | 1. Pool size’ı artırın 2. Connection’ların düzgün kapatıldığını kontrol edin 3. Idle connection timeout’ları ayarlayın 4. Connection kullanım metriklerini izleyin |
| Connection Test Başarılı Ama Entegrasyon Akışı Hata Veriyor | - Integration/Connector adımında farklı connection seçili olabilir - Adım yanlış yapılandırılmış olabilir - Flow/Job redeploy edilmemiş olabilir | 1. Connection’ın enable toggle’ının aktif olduğunu kontrol edin 2. Integration Flow’da doğru connection’ın seçildiğini doğrulayın 3. Connection’ı tekrar deploy edin 4. Integration Flow veya Job’ı redeploy edin 5. Gateway loglarını kontrol edin |
Sık Sorulan Sorular (SSS)
| Kategori | Soru | Cevap |
|---|---|---|
| Genel | Aynı broker içinde birden fazla destinasyonu tek connection ile yönetebilir miyim? | Evet, aynı Apache ActiveMQ connection farklı Integration Flow adımlarında farklı destinasyonlarla birlikte kullanılabilir; her adımda hedef destinasyon konfigürasyonu ayrıca yapılmalıdır. |
| Genel | Connection disable edildiğinde mesaj tüketimi tamamen durur mu? | Disable edildiği anda bağlantı yeniden kullanılmaz, entegrasyon adımları hata döner veya bağlantı seçimini yapmaya zorlar. |
| Teknik | AMQP’den TCP’ye geçiş için hangi ayarları değiştirmeliyim? | ActiveMQ Connection Protocol Type değerini TCP yapın, Broker URL’yi tcp:// veya ssl:// şemasına güncelleyin, güvenlik duvarı portlarını kontrol edin. |
| Teknik | Durable topic aboneliği nasıl aktive edilir? | Destination Type=TOPIC, ClientID alanını benzersiz girin ve Integration Flow tarafında durable subscriber seçeneğini etkinleştirin. |
| Kullanım | Queue doluysa connection üzerinde otomatik retry yapılır mı? | Broker tarafı hata dönerse ActiveMQ client yeniden deneme yapar; yine de uygulama loglarını takip edip kapasite planlaması yapmanız gerekir. |
| Genel | Aynı connection’ı birden fazla Integration Flow’da kullanabilir miyim? | Evet, aynı connection birden fazla Integration Flow veya Connector adımında kullanılabilir. Bu merkezi yönetim sağlar ve konfigürasyon tutarlılığını garanti eder. Ancak connection’da yapılan değişiklikler tüm kullanım yerlerini etkileyeceği için dikkatli olunmalıdır. |
| Teknik | Connection pool kullanmak zorunlu mudur? | Connection pool kullanımı zorunlu değildir ancak yüksek trafikli sistemlerde şiddetle önerilir. Her istekte yeni bağlantı açmak yerine mevcut bağlantıları yeniden kullanmak performansı önemli ölçüde artırır. |
| Kullanım | Test ve Production için farklı connection’lar mı oluşturmalıyım? | Evet, her ortam için ayrı connection oluşturmanız önerilir. Alternatif olarak environment parametresini kullanarak tek connection içinde tüm ortamları yönetebilirsiniz. Bu yaklaşım daha kolay yönetim ve daha az hata riski sağlar. |
| Teknik | Test Connection başarılı ama Integration Flow’da çalışmıyor, neden? | Birkaç neden olabilir: 1) Connection enable toggle’ı pasif olabilir, 2) Integration adımında farklı bir connection seçili olabilir, 3) Connection deploy edilmemiş olabilir, 4) Integration Flow henüz redeploy edilmemiş olabilir. |
| Kullanım | Connection’ı görüntülemek için nasıl bir yol izlemeliyim? | Connection listesinde connection adına (Name) tıklayarak veya satır sonundaki menüden (⋮) View seçeneğini seçerek view ekranına gidebilirsiniz. View ekranında tüm connection bilgilerini görüntüleyebilir ve Edit, Enable/Disable, Delete, Export gibi işlemleri gerçekleştirebilirsiniz. |
| Kullanım | View ekranından connection’ı düzenleyebilir miyim? | Evet, view ekranının sağ üst köşesindeki [Edit] butonuna tıklayarak düzenleme ekranına yönlendirilirsiniz. Düzenleme ekranında tüm parametreleri güncelleyebilirsiniz. |
BROKER URL için Örnekler
AMQP URL Örnekleri
| Senaryo | URL Örneği | Açıklama |
|---|---|---|
| Basit Bağlantı | amqp://localhost:5672 | En temel AMQP bağlantısı |
| Kimlik Doğrulamalı | amqp://user:password@localhost:5672 | Kullanıcı adı ve şifre ile bağlantı |
| SSL/TLS | amqps://secure-broker.example.com:5671 | Güvenli AMQP bağlantısı |
| Çoklu Broker | amqp://broker1:5672,amqp://broker2:5672 | Birden fazla broker’a bağlantı |
| Timeout Ayarlı | amqp://localhost:5672?transport.connectTimeout=30000&transport.requestTimeout=30000 | Timeout değerleri belirlenmiş |
| SSL ve Failover | amqps://broker:5671?transport.trustStoreLocation=/path/truststore.jks&failover.maxReconnectAttempts=5 | SSL ve yeniden bağlanma ayarlı |
| Prefetch Ayarlı | amqp://broker:5672?jms.prefetchPolicy.all=1000 | Mesaj ön yükleme ayarlı |
| Çok Özellikli | amqp://broker:5672?jms.prefetchPolicy.all=1000&amqp.idleTimeout=30000&transport.connectTimeout=30000 |
TCP URL Örnekleri
| Senaryo | URL Örneği | Açıklama |
|---|---|---|
| Basit Bağlantı | tcp://localhost:61616 | En temel TCP bağlantısı |
| Kimlik Doğrulamalı | tcp://user:password@localhost:61616 | Kullanıcı adı ve şifre ile bağlantı |
| Timeout Ayarlı | tcp://localhost:61616?soTimeout=30000&soWriteTimeout=30000 | Timeout değerleri belirlenmiş |
| Basit Failover | failover:(tcp://broker1:61616,tcp://broker2:61616) | Temel failover yapılandırması |
| SSL ile | ssl://secure-broker:61617?needClientAuth=true&keyStore=/path/keystore.jks | SSL sertifikalı bağlantı |
| Performans Optimizasyonlu | tcp://localhost:61616?tcpNoDelay=true&socketBufferSize=65536 | Performans için optimize edilmiş |
| Yüksek Kullanılabilirlik | failover:(tcp://primary:61616,tcp://backup:61616)?maxReconnectAttempts=-1 | Yüksek kullanılabilirlik için ayarlanmış |
| Tam Failover | failover:(tcp://broker1:61616,tcp://broker2:61616)?initialReconnectDelay=1000&maxReconnectDelay=30000&maxReconnectAttempts=5 | Detaylı failover ayarları |
| Üretim Ortamı | failover:(tcp://prod1:61616,tcp://prod2:61616)?randomize=true&priorityBackup=true&useExponentialBackOff=true | Üretim ortamı için optimize edilmiş |
Önemli Parametreler ve Değerleri
| Parametre Tipi | Parametre | Örnek Değer | Açıklama |
|---|---|---|---|
| Timeout | soTimeout | 30000 | Socket okuma timeout (ms) |
| Timeout | soWriteTimeout | 30000 | Socket yazma timeout (ms) |
| Failover | maxReconnectAttempts | 5 | Maksimum yeniden bağlanma denemesi |
| Failover | initialReconnectDelay | 1000 | İlk bağlanma gecikmesi (ms) |
| Performans | tcpNoDelay | true | TCP Nagle algoritması devre dışı |
| Performans | socketBufferSize | 65536 | Socket buffer boyutu (bytes) |
| Prefetch | jms.prefetchPolicy.queuePrefetch | 1000 | Queue için ön yükleme sayısı |
| Prefetch | jms.prefetchPolicy.topicPrefetch | 1000 | Topic için ön yükleme sayısı |
| SSL | needClientAuth | true | Client sertifikası gerekli |
| SSL | verifyHost | true | Host doğrulama aktif |
Yaygın Kullanım Senaryoları
| Senaryo | Protokol | Önerilen URL |
|---|---|---|
| Development | AMQP | amqp://localhost:5672 |
| Development | TCP | tcp://localhost:61616 |
| Test | AMQP | failover:(amqp://test1:5672,amqp://test2:5672)?failover.maxReconnectAttempts=3 |
| Test | TCP | failover:(tcp://test1:61616,tcp://test2:61616)?maxReconnectAttempts=3 |
| Production | AMQP | amqps://prod:5671?transport.trustStoreLocation=/certs/truststore.jks&failover.maxReconnectAttempts=-1 |
| Production | TCP | failover:(tcp://prod1:61616,tcp://prod2:61616)?randomize=true&maxReconnectAttempts=-1 |
| Yüksek Güvenlik | AMQP | amqps://secure:5671?transport.verifyHost=true&transport.trustStoreLocation=/certs/truststore.jks |
| Yüksek Güvenlik | TCP | ssl://secure:61617?needClientAuth=true&keyStore=/certs/keystore.jks |
| Yüksek Performans | AMQP | amqp://fast:5672?jms.prefetchPolicy.all=2000&amqp.maxFrameSize=1048576 |
| Yüksek Performans | TCP | tcp://fast:61616?tcpNoDelay=true&socketBufferSize=131072&wireFormat.maxFrameSize=104857600 |

