> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ActiveMQ 

> ActiveMQ broker'larına güvenli ve yönetilebilir bağlantı sağlar. AMQP/TCP protokolleri ile mesaj kuyruğu ve topic tabanlı güvenilir asenkron mesajlaşma gerçekleştirebilir, mesaj gönderme ve alma işlemlerini merkezileştirebilir

## Genel Bakış

<AccordionGroup>
  <Accordion title="Amacı Nedir?">
    <CardGroup cols={2}>
      <Card title="Merkezi Yönetim" icon="database">
        Connection (Bağlantı), ActiveMQ broker'larına güvenilir erişim sağlayarak mesaj gönderme ve alma işlemlerini merkezileştirir.
      </Card>

      <Card title="Yeniden Kullanılabilirlik" icon="repeat">
        Farklı Integration Flow adımlarında yeniden kullanılabilir bağlantı parametreleri sunarak yapılandırma tekrarını ortadan kaldırır.
      </Card>

      <Card title="Ortam Bazlı Yönetim" icon="code-branch">
        Ortam bazlı yönetimle Development, Test ve Production arasında tutarlı dağıtım (Deployment) süreçleri sağlar.
      </Card>

      <Card title="Performans ve Dayanıklılık" icon="gauge">
        Gelişmiş timeout ve pool yönetimi sayesinde yüksek trafikli senaryolarda performans ve dayanıklılık kazandırır.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Çalışma Prensibi">
    <CardGroup cols={2}>
      <Card title="Bağlantı Başlatma" icon="play">
        Integration Flow veya Connector içerisinden Message Queue bağlantısı talep edildiğinde, sistem yapılandırılmış connection parametrelerini okur.
      </Card>

      <Card title="Connection Pool Yönetimi" icon="layer-group">
        Aktif connection pool stratejisiyle önceden açılmış bağlantılar yeniden kullanılır; pool doluysa yeni connection oluşturulur.
      </Card>

      <Card title="Kimlik Doğrulama" icon="shield">
        Temel Authentication mekanizmasıyla (kullanıcı adı/şifre) veya opsiyonel SSL/TLS sertifika doğrulamasıyla broker'a kimlik doğrulaması yapılır.
      </Card>

      <Card title="Veri İletişimi" icon="arrows-rotate">
        AMQP/TCP protokolü üzerinden Queue veya Topic hedefine JMS mesajları senkron/asenkron olarak iletilir ya da tüketilir.
      </Card>

      <Card title="Bağlantı Yönetimi" icon="gear">
        İşlem tamamlandığında bağlantı pool'a geri döner; pasif bağlantılar pool politikalarına göre kapatılır.
      </Card>

      <Card title="Hata Yönetimi" icon="triangle-exclamation">
        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.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Kullanım Alanları">
    <CardGroup cols={2}>
      <Card title="Asenkron Mesaj Kuyruğu" icon="inbox">
        Uygulama bileşenlerinin ActiveMQ üzerinden asenkron mesaj kuyruğu işlemleri yürütmesi.
      </Card>

      <Card title="Güvenilir Mesaj Yayını" icon="broadcast">
        Queue veya Topic tabanlı entegrasyonlarda güvenilir mesaj yayını ve tüketimi.
      </Card>

      <Card title="Yüksek Hacimli Mesaj Senaryoları" icon="chart-line">
        İş zekâsı, bildirim veya entegrasyon servislerinde yüksek hacimli mesaj senaryoları.
      </Card>

      <Card title="Mikroservisler Arası İletişim" icon="network-wired">
        Mikroservisler arası iletişimde AMQP tabanlı olay paylaşımı.
      </Card>

      <Card title="Legacy JMS Entegrasyonu" icon="code">
        Legacy JMS uygulamalarını modern Integration Flow adımlarına dahil etme.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## 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

<AccordionGroup>
  <Accordion title="Zorunlu Parametreler">
    <CardGroup cols={2}>
      <Card title="Name" icon="tag">
        **Açıklama:** Connection adı (benzersiz olmalı)\
        **Örnek Değer:** `Production_ActiveMQ`\
        **Notlar:** Boşlukla başlamaz, özel karakterler kullanılmamalı
      </Card>

      <Card title="Broker URL" icon="link">
        **Açıklama:** ActiveMQ broker erişim adresi\
        **Örnek Değer:** `tcp://mq.prod.local:61616`\
        **Notlar:** Protokol (amqp/tcp) ve port değerini içerir
      </Card>

      <Card title="Username" icon="user">
        **Açıklama:** ActiveMQ erişim kullanıcı adı\
        **Örnek Değer:** `mq_service_user`\
        **Notlar:** Yetkilendirilmiş hesap kullanılmalı
      </Card>

      <Card title="Password" icon="lock">
        **Açıklama:** Kullanıcıya ait şifre\
        **Örnek Değer:** `********`\
        **Notlar:** Şifre saklama için secret manager kullanılmalı
      </Card>

      <Card title="Destination Type" icon="list">
        **Açıklama:** Queue veya Topic seçimi\
        **Örnek Değer:** `QUEUE`\
        **Notlar:** Enum değerleri: QUEUE, TOPIC
      </Card>

      <Card title="Destination Name" icon="file-lines">
        **Açıklama:** Mesaj kuyruğu veya topic adı\
        **Örnek Değer:** `order.events.queue`\
        **Notlar:** Namespace kuralına uyulmalı
      </Card>

      <Card title="ActiveMQ Connection Protocol Type" icon="network-wired">
        **Açıklama:** Kullanılacak bağlantı protokolü\
        **Örnek Değer:** `AMQP`\
        **Notlar:** Enum değerleri: AMQP, TCP
      </Card>

      <Card title="Session Acknowledgement" icon="check">
        **Açıklama:** JMS oturum onay tipi\
        **Örnek Değer:** `AUTO_ACKNOWLEDGE`\
        **Notlar:** Enum değerleri: AUTO\_ACKNOWLEDGE, CLIENT\_ACKNOWLEDGE, SESSION\_TRANSACTED, DUPS\_OK\_ACKNOWLEDGE
      </Card>

      <Card title="Environment Id" icon="server">
        **Açıklama:** Ortam seçimi referansı\
        **Örnek Değer:** `env-prod-01`\
        **Notlar:** Ortam listesi Environment servisinden gelir
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="İsteğe Bağlı Parametreler">
    <CardGroup cols={2}>
      <Card title="Send Timeout" icon="clock">
        **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
      </Card>

      <Card title="Request Timeout" icon="hourglass">
        **Açıklama:** Yanıt bekleme süresi\
        **Varsayılan Değer:** 60000\
        **Önerilen Değer:** Kritik işlemler için 45000
      </Card>

      <Card title="Close Timeout" icon="xmark">
        **Açıklama:** Bağlantıyı kapatma süresi\
        **Varsayılan Değer:** 60000\
        **Önerilen Değer:** Uzun oturumlar için 90000
      </Card>

      <Card title="Connect Timeout" icon="plug">
        **Açıklama:** Broker'a bağlanma süresi\
        **Varsayılan Değer:** 60000\
        **Önerilen Değer:** Yüksek gecikmeli ağlarda 90000 ms
      </Card>

      <Card title="Content Type" icon="file-code">
        **Açıklama:** Mesaj içerik tipi\
        **Varsayılan Değer:** application/json\
        **Önerilen Değer:** İş yüküne göre application/xml
      </Card>

      <Card title="Content Encoding" icon="language">
        **Açıklama:** Mesaj karakter seti\
        **Varsayılan Değer:** UTF-8\
        **Önerilen Değer:** Standart UTF-8 kullanımı önerilir
      </Card>

      <Card title="Client ID" icon="id-card">
        **Açıklama:** Kalıcı abonelik kimliği\
        **Varsayılan Değer:** durable-consumer-1\
        **Önerilen Değer:** Durable topic aboneliklerinde zorunlu
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

### Timeout ve Connection Pool Parametreleri

<CardGroup cols={2}>
  <Card title="Connection Timeout" icon="clock">
    **Açıklama:** Bağlantı kurulması için maksimum bekleme süresi\
    **Varsayılan:** 60000\
    **Min:** 1000 | **Max:** 180000\
    **Birim:** milisaniye
  </Card>

  <Card title="Request Timeout" icon="hourglass">
    **Açıklama:** İstek yanıtı için maksimum bekleme süresi\
    **Varsayılan:** 60000\
    **Min:** 1000 | **Max:** 180000\
    **Birim:** milisaniye
  </Card>

  <Card title="Pool Size" icon="layer-group">
    **Açıklama:** Connection pool'daki maksimum bağlantı sayısı\
    **Varsayılan:** 10\
    **Min:** 1 | **Max:** 200\
    **Birim:** adet
  </Card>

  <Card title="Send Timeout" icon="paper-plane">
    **Açıklama:** Mesaj gönderiminin en uzun sürmesi beklenen süre\
    **Varsayılan:** 60000\
    **Min:** 5000 | **Max:** 180000\
    **Birim:** milisaniye
  </Card>
</CardGroup>

### Kullanım Senaryoları

<CardGroup cols={2}>
  <Card title="Sipariş Kuyruğu Tüketimi" icon="inbox">
    **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
  </Card>

  <Card title="Canlı Bildirim Yayını" icon="broadcast">
    **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
  </Card>

  <Card title="Yüksek Güvenlikli Broker" icon="shield">
    **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
  </Card>

  <Card title="Uzun Süreli İşlem" icon="hourglass">
    **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
  </Card>

  <Card title="Test Ortamı Simülasyonu" icon="flask">
    **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
  </Card>

  <Card title="Disaster Recovery" icon="rotate">
    **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
  </Card>
</CardGroup>

## Connection Yapılandırma

### Yeni Apache ActiveMQ Oluşturma

<img src="https://mintcdn.com/apinizer/YX1NcEKlSBeHefxE/images/yonetici/baglantilar/active-variable-new.png?fit=max&auto=format&n=YX1NcEKlSBeHefxE&q=85&s=fd899237f30a1781484f820a6d22a62f" alt="Apache ActiveMQ Oluşturma Ekranı" width="1000" className="mr-auto" data-path="images/yonetici/baglantilar/active-variable-new.png" />

#### Yapılandırma Adımları

<Steps>
  <Step title="Oluşturma Sayfasına Gitme">
    * Sol menüden Connection → Apache ActiveMQ bölümüne gidin.
    * Sağ üstteki \[+ Create] butonuna tıklayın.
  </Step>

  <Step title="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.

    **Description (Açıklama):**

    Örnek: "Sipariş kuyruğu entegrasyonu"

    * Maks. 1000 karakter.
    * Connection'ın amacını açıklayın.

    <Info>
      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](/tr/concepts/temel-kavramlar/dinamik-degiskenler) sayfasını inceleyebilirsiniz.
    </Info>
  </Step>

  <Step title="Environment (Ortam) Seçimi">
    * Dropdown menüden ortam seçin: Development, Test, veya Production.
    * Her ortam için farklı connection parametreleri tanımlanabilir.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.
  </Step>

  <Step title="Kaydetme">
    * 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.
  </Step>
</Steps>

### Connection'ı Silme

Connection'ı silmek için:

<CardGroup cols={2}>
  <Card title="Yöntem 1: View Ekranından" icon="eye">
    * Connection'ın view ekranına gidin.
    * Sağ üstteki **\[Delete]** butonuna tıklayın.
    * Onay dialogunda silme işlemini onaylayın.
  </Card>

  <Card title="Yöntem 2: Liste Ekranından" icon="list">
    * Connection listesinde satır sonundaki **⋮** menüsünden **Delete** seçeneğini tıklayın.
    * Onay dialogunda silme işlemini onaylayın.
  </Card>

  <Card title="Silme İpuçları" icon="info-circle">
    **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.
  </Card>

  <Card title="Alternatif: Deaktif Etme" icon="toggle-off">
    * Silmek yerine view ekranından **\[Disabled]** butonunu kullanın.
    * Connection pasif olur ancak silinmez.
    * Gerektiğinde **\[Enabled]** butonu ile yeniden etkinleştirilebilir.
  </Card>
</CardGroup>

### Connection'ı Dışa/İçe Aktarma

<Info>
  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.
</Info>

<AccordionGroup>
  <Accordion title="Dışa Aktarma (Export)">
    <CardGroup cols={2}>
      <Card title="Yöntem 1: View Ekranından" icon="eye">
        * Connection'ın view ekranına gidin.
        * Sağ üstteki **\[Export]** butonuna tıklayın.
        * ZIP dosyası otomatik olarak indirilir.
      </Card>

      <Card title="Yöntem 2: Liste Ekranından" icon="list">
        * Connection listesinde satır sonundaki **⋮** menüsünden **Export** seçeneğini tıklayın.
        * ZIP dosyası otomatik olarak indirilir.
      </Card>

      <Card title="Dosya Formatı" icon="file-zipper">
        Format: `{Date}-activemq-integration-{ConnectionName}-export.zip`\
        Örnek: `13 Nov 2025-activemq-integration-Production_ActiveMQ-export.zip`
      </Card>

      <Card title="ZIP İçeriği" icon="folder-open">
        * Connection JSON dosyası
        * Metadata bilgileri
        * Bağımlılık bilgileri (örneğin sertifikalar, key store)
      </Card>

      <Card title="Kullanım Alanları" icon="list-check">
        * Yedekleme
        * Ortamlar arası taşıma (Test → Prod)
        * Versiyonlama
        * Ekip veya proje bazlı paylaşım
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="İçe Aktarma (Import)">
    <CardGroup cols={2}>
      <Card title="İçe Aktarma Adımları" icon="upload">
        * 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.
      </Card>

      <Card title="İçe Aktarma Senaryoları" icon="info-circle">
        **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.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Connection'ın Kullanım Alanları

<CardGroup cols={2}>
  <Card title="Connection Oluşturma ve Aktif Etme" icon="plus-circle">
    **Adımlar:**

    1. Connection'ı oluşturun.
    2. Test Connection ile bağlantıyı doğrulayın.
    3. Save and Deploy ile kaydedin ve etkinleştirin.
    4. Connection'ın Enabled durumda olduğundan emin olun.
    5. View ekranından connection bilgilerini görüntüleyebilirsiniz.
  </Card>

  <Card title="Connection Görüntüleme ve Yönetim" icon="eye">
    * 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.
  </Card>

  <Card title="Integration / Connector Adımlarında Kullanım" icon="plug">
    * 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.
  </Card>

  <Card title="Scheduled Job Kullanımı" icon="clock">
    * 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.
  </Card>

  <Card title="Test Amaçlı Kullanım" icon="flask">
    * 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.
  </Card>

  <Card title="Connection Durum Yönetimi" icon="toggle-on">
    * 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.
  </Card>
</CardGroup>

## 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.<br /><br />**İyi:** Farklı iş türleri için ayrı Queue/Topic tanımlamak.<br /><br />**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.<br /><br />**İyi:** İç ağda TCP, dış ağda AMQP tercih etmek.<br /><br />**En İyi:** SSL/TLS destekli AMQP kullanarak şifreli iletişim sağlamak                                                                   |
| Oturum Onayı Politikası | **Kötü:** Tüm akışlarda AUTO\_ACKNOWLEDGE kullanmak.<br /><br />**İyi:** Kritik işlemlerde CLIENT\_ACKNOWLEDGE'e geçmek.<br /><br />**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.<br /><br />**İyi:** Konfigürasyon dosyasında maskelemek.<br /><br />**En İyi:** Secret Manager veya environment variable üzerinden dinamik olarak çekmek.                                                                         |
| Gözlemlenebilirlik      | **Kötü:** Connection loglarını takip etmemek.<br /><br />**İyi:** Temel hata loglarını izlemek.<br /><br />**En İyi:** Pool, timeout ve broker metriklerini merkezi izleme sistemine göndermek.                                                                                              |
| Ortam Yönetimi          | **Kötü:** Tüm ortamlarda aynı connection parametrelerini kullanmak.<br /><br />**İyi:** Her ortam için ayrı connection oluşturmak.<br /><br />**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.<br /><br />**İyi:** Kaydetmeden önce Test Connection ile doğrulamak.<br /><br />**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.<br /><br />**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.<br /><br />**Alternatif:** Trafiğe göre ölçümlenmiş pool boyutları belirleyin.                                                                                                                                                                         |
| Standart Dışı Encoding                          | **Neden kaçınılmalı:** Tüketiciler mesajı çözemeyebilir.<br /><br />**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.<br /><br />**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.<br /><br />**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.<br /><br />**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.<br /><br />**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.<br /><br />**Etki:** Mesaj kuyrukları birikmeden tüketilir.                                                                                                                             |
| Ack Stratejisi                  | **Öneri:** Kritik akışlarda CLIENT\_ACKNOWLEDGE ile manuel kontrol sağlayın.<br /><br />**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.<br /><br />**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.<br /><br />**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.<br /><br />**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<br />- Güvenlik duvarı engeli<br />- Broker servisi kapalı                                                                             | 1. Broker URL ve port doğrulayın<br />2. Ağ erişimini test edin (telnet, nc)<br />3. Broker loglarını kontrol edin                                                                                                                                                      |
| Destination Bulunamadı                                      | - Queue/topic oluşturulmamış<br />- Yanlış isim girilmiş<br />- Yetki eksik                                                                                | 1. Broker yönetim konsolundan destinasyonu doğrulayın<br />2. Connection parametresini güncelleyin<br />3. Kullanıcı yetkilerini kontrol edin                                                                                                                           |
| Connection Timeout                                          | - Network gecikmesi<br />- Hedef sistem yavaş yanıt veriyor<br />- Timeout değeri çok düşük                                                                | 1. Network connectivity kontrol edin<br />2. Hedef sistem sağlığını kontrol edin<br />3. Timeout değerlerini artırın<br />4. Connection loglarını inceleyin                                                                                                             |
| Authentication Failed                                       | - Yanlış kullanıcı adı/şifre<br />- Expired credentials<br />- Yetki problemi                                                                              | 1. Kimlik bilgilerini doğrulayın<br />2. Hedef sistemde kullanıcının aktif olduğunu kontrol edin<br />3. Gerekli yetkilerin verildiğini kontrol edin<br />4. SSL/TLS sertifikalarını kontrol edin                                                                       |
| Pool Exhausted                                              | - Pool size çok düşük<br />- Connection leak var<br />- Trafik çok yüksek                                                                                  | 1. Pool size'ı artırın<br />2. Connection'ların düzgün kapatıldığını kontrol edin<br />3. Idle connection timeout'ları ayarlayın<br />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<br />- Adım yanlış yapılandırılmış olabilir<br />- Flow/Job redeploy edilmemiş olabilir | 1. Connection'ın enable toggle'ının aktif olduğunu kontrol edin<br />2. Integration Flow'da doğru connection'ın seçildiğini doğrulayın<br />3. Connection'ı tekrar deploy edin<br />4. Integration Flow veya Job'ı redeploy edin<br />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`            |

***
