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

# Kafka

> Kafka bağlantılarını yapılandırır ve yönetir. Topic tabanlı mesaj gönderme ve tüketme işlemlerini SSL/TLS güvenliği ile gerçekleştirebilir, Integration Flow veya Connector adımlarının merkezi topic erişim bilgilerini tek bir yerde saklayabilir ve çeşitli Kafka üretici/consumer özelliklerini yönetebilir

## Genel Bakış

<AccordionGroup>
  <Accordion title="Amacı Nedir?">
    <CardGroup cols={2}>
      <Card title="Merkezi Yönetim" icon="database">
        Kafka Connection (Bağlantı), Integration Flow veya Connector adımlarının merkezi topic erişim
        bilgilerini tek bir yerde saklayarak tekrar kullanılabilir hale getirir.
      </Card>

      <Card title="Standart Yapılandırma" icon="gear">
        Çeşitli Kafka üretici/consumer özelliklerini propertiesMap üzerinden yöneterek mesajlaştırma
        altyapısında standart yapılandırmayı korur.
      </Card>

      <Card title="Güvenlik" icon="shield">
        Enable Secure aktif edildiğinde SSL/TLS parametrelerini zorunlu kılarak kritik veri trafiğinin
        şifrelenmesini garanti altına alır.
      </Card>

      <Card title="Test Fonksiyonu" icon="flask">
        Test Connection fonksiyonu ile bağlantı parametreleri Deployment öncesinde doğrulandığından, hata
        yakalama süreci hızlanır.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

<AccordionGroup>
  <Accordion title="Çalışma Prensibi">
    <CardGroup cols={2}>
      <Card title="Bağlantı Başlatma" icon="play">
        Integration Flow veya Connector içerisinden Kafka 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">
        Kafka producer/consumer havuzu, propertiesMap içerisinde tanımlanan max.block.ms, reconnect.backoff.max.ms gibi değerleri kullanarak mevcut bağlantıları yeniden kullanır veya yeni bağlantı açar.
      </Card>

      <Card title="Kimlik Doğrulama" icon="shield">
        Enable Secure aktifse karşılıklı sertifika tabanlı Authentication uygulanır; opsiyonel olarak SASL/SCRAM bilgileri de propertiesMap içinden okunur.
      </Card>

      <Card title="Veri İletişimi" icon="arrows-rotate">
        TCP üzerinden Kafka wire protokolü ile topic'e mesaj gönderilir veya tüketilir; serializer ayarları propertiesMap'teki key.serializer ve value.serializer alanlarından alınır.
      </Card>

      <Card title="Bağlantı Yönetimi" icon="gear">
        İşlem tamamlandıktan sonra bağlantı pool'a geri döner; enable toggle pasif hale getirilmiş bağlantılar hiçbir Flow tarafından seçilemez.
      </Card>

      <Card title="Hata Yönetimi" icon="triangle-exclamation">
        Bağlantı hatası, timeout veya authentication hatası durumunda retry.backoff.ms ve max.block.ms değerlerine göre yeniden deneme yapılır, sonuç Apinizer mesaj servisine aktarılır.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Kullanım Alanları">
    <CardGroup cols={2}>
      <Card title="Integration Flow Mesajlaşma" icon="network-wired">
        Integration Flow içindeki "Send Message" veya "Consume Message" adımlarının tek tip Kafka topic'lerini hedeflemesi
      </Card>

      <Card title="Connector Veri Toplama" icon="plug">
        Connector tabanlı veri toplama süreçlerinde merkezi Kafka yapılandırmasının paylaşılması
      </Card>

      <Card title="Scheduled Job Telemetri" icon="clock">
        Scheduled Job'larda belirli aralıklarla Kafka'ya telemetri veya log gönderimi
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Teknik Özellikler ve Yetenekler

<AccordionGroup>
  <Accordion title="Temel Özellikler">
    <CardGroup cols={2}>
      <Card title="Topic Bazlı Mesajlama" icon="list">
        Zorunlu topicName alanı sayesinde her Connection belirli bir topic'e odaklanır ve Integration Flow adımlarında hatalı topic seçiminin önüne geçer.
      </Card>

      <Card title="Dinamik Kafka PropertiesMap" icon="slider">
        İstenilen Kafka client parametreleri propertiesMap üzerinden anahtar-değer yapısında tutulur, MapValue tipleri sayesinde string, integer veya secret veriler ayrıştırılır.
      </Card>

      <Card title="Yerleşik Ad Eşsizliği Kontrolü" icon="check-circle">
        UI tarafındaki debounce mekanizması aynı isimde bir Connection oluşturulmasını engeller ve çakışmaları erken uyarır.
      </Card>

      <Card title="Ortam Bazlı Yapılandırma" icon="code-branch">
        Her ortam (Development, Test, Production) için ayrı connection parametreleri tanımlama imkanı.
      </Card>

      <Card title="Enable/Disable Kontrolü" icon="toggle-on">
        Connection'ı aktif veya pasif hale getirme (enable/disable toggle). Pasif durumda bağlantı kullanılamaz ancak yapılandırması saklanır.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="İleri Düzey Özellikler">
    <CardGroup cols={2}>
      <Card title="SASL/SCRAM Desteği" icon="shield">
        SASL mekanizmaları propertiesMap içerisine eklenerek şifreli Authentication senaryoları kod değişikliği olmadan uygulanır.
      </Card>

      <Card title="Keystore-Truststore Yönetimi" icon="key">
        Enable Secure açıkken hem KeyStore hem TrustStore seçilebilir, gerekirse yeni kayıtlar anlık olarak Secret Manager'da oluşturulur.
      </Card>

      <Card title="Dinamik Protokol Seçimi" icon="network-wired">
        Birden fazla SSLContext protokolü (TLSv1.2, TLSv1.3 vb.) MultiSelect ile seçilip aynı Connection üzerinde saklanır.
      </Card>

      <Card title="Connection Test Özelliği" icon="flask">
        "Test Connection" butonu ile bağlantı parametrelerini kaydetmeden önce doğrulama imkanı.
      </Card>

      <Card title="Export/Import Özelliği" icon="file-export">
        Connection yapılandırmasını ZIP dosyası olarak export etme. Farklı ortamlara (Development, Test, Production) import etme. Versiyon kontrolü ve yedekleme imkanı.
      </Card>

      <Card title="Connection Monitoring" icon="chart-line">
        Bağlantı sağlığı, pool durumu ve performans metriklerini izleme.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## 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_KafkaTopic01`\
        **Notlar:** Boşlukla başlamaz, özel karakterler kullanılmamalı
      </Card>

      <Card title="Environment (Ortam)" icon="server">
        **Açıklama:** Bağlantının Deployment alacağı ortam kimliği\
        **Örnek Değer:** `Development`\
        **Notlar:** Ortam değiştirmek aynı Connection içinde parametrik yönetim sağlar
      </Card>

      <Card title="Topic Name" icon="list">
        **Açıklama:** Kafka üzerinde hedeflenen topic adı\
        **Örnek Değer:** `audit.events.v1`\
        **Notlar:** Producer ve consumer adımlarında aynı topic kullanılmalıdır
      </Card>

      <Card title="Properties Map" icon="slider">
        **Açıklama:** Kafka client için anahtar-değer çiftleri (bootstrap.servers vb.)\
        **Örnek Değer:** `bootstrap.servers=broker1:9092`\
        **Notlar:** En az bir kayıt olmalı; MapValue tipleri doğru seçilmelidir
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="İsteğe Bağlı Parametreler">
    <CardGroup cols={2}>
      <Card title="Description" icon="file-lines">
        **Açıklama:** Connection amaç hakkındaki açıklama\
        **Varsayılan Değer:** (Boş)\
        **Önerilen Değer:** Prod audit topic publish connection
      </Card>

      <Card title="Enable Secure" icon="shield">
        **Açıklama:** SSL/TLS kullanımını açar\
        **Varsayılan Değer:** false\
        **Önerilen Değer:** true (Production)
      </Card>

      <Card title="Protocol Types" icon="network-wired">
        **Açıklama:** Enable Secure olduğunda izin verilen SSLContext protokolleri\
        **Varsayılan Değer:** (Boş)\
        **Önerilen Değer:** TLSv1.2, TLSv1.3
      </Card>

      <Card title="KeyStoreId" icon="key">
        **Açıklama:** İstemci sertifikasını içeren keystore kaynağı\
        **Varsayılan Değer:** (Boş)\
        **Önerilen Değer:** ks-prod-clients
      </Card>

      <Card title="TrustStoreId" icon="shield-halved">
        **Açıklama:** Broker sertifikasını doğrulayan truststore kaynağı\
        **Varsayılan Değer:** (Boş)\
        **Önerilen Değer:** ts-shared-root
      </Card>

      <Card title="Deploy To Worker" icon="server">
        **Açıklama:** connectionConfigKafka.model.ts içinde true gelir\
        **Varsayılan Değer:** true\
        **Önerilen Değer:** true
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="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:** 3000\
        **Min:** 1000 | **Max:** 60000\
        **Birim:** milisaniye
      </Card>

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

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

      <Card title="Retry Backoff" icon="repeat">
        **Açıklama:** retry.backoff.ms değeri, tekrar denemeler arası bekleme\
        **Varsayılan:** 3000\
        **Min:** 100 | **Max:** 10000\
        **Birim:** milisaniye
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Kullanım Senaryoları

<CardGroup cols={2}>
  <Card title="Gerçek Zamanlı Audit" icon="chart-line">
    **Durum:** Tüm servisler audit topic'ine mesaj basmalı\
    **Çözüm:** topicName=audit.events, bootstrap.servers=cluster-prod:9092\
    **Beklenen Davranış:** Audit mesajları tek topic'te toplanır, denetim ekibi tek noktadan tüketir
  </Card>

  <Card title="Çoklu Ortam Yönetimi" icon="code-branch">
    **Durum:** Aynı Connection farklı ortamlarda kullanılmalı\
    **Çözüm:** Environment=Development, Enable Secure=false\
    **Beklenen Davranış:** Ortam seçimi ile farklı broker URL'leri yönetilir
  </Card>

  <Card title="Güvenli Üretim Yayını" icon="shield">
    **Durum:** Prod broker TLS zorunlu\
    **Çözüm:** Enable Secure=true, ProtocolTypes=TLSv1.3, KeyStoreId=ks-prod\
    **Beklenen Davranış:** Sertifika doğrulaması sağlanır, mesajlar şifreli gider
  </Card>

  <Card title="Yüksek Trafik Kuyruk" icon="chart-bar">
    **Durum:** Ani trafik artı var\
    **Çözüm:** Pool Size=50, linger.ms=5, batch.size=32768\
    **Beklenen Davranış:** Üretici batch'leri büyür, throughput artar
  </Card>

  <Card title="Retry Optimizasyonu" icon="repeat">
    **Durum:** Broker ara ara yanıt vermiyor\
    **Çözüm:** retry.backoff.ms=5000, retries=10\
    **Beklenen Davranış:** Otomatik yeniden denemeler ile mesaj kaybı yaşanmaz
  </Card>

  <Card title="SLA İzleme (opsiyonel)" icon="gauge">
    **Durum:** Mesaj gecikmeleri ölçülmeli\
    **Çözüm:** delivery.timeout.ms=60000, enable.idempotence=true\
    **Beklenen Davranış:** Üretici timeouts loglanır, SLA raporları beslenir
  </Card>
</CardGroup>

## Connection Yapılandırma

### Yeni Kafka Oluşturma

<img src="https://mintcdn.com/apinizer/YX1NcEKlSBeHefxE/images/yonetici/baglantilar/kafka-variable-new.png?fit=max&auto=format&n=YX1NcEKlSBeHefxE&q=85&s=b0e78256a11f4b82b9c3909863fc6701" alt="Image 2024 9 9 15 35 35 Pn" width="1000" className="mr-auto" data-path="images/yonetici/baglantilar/kafka-variable-new.png" />

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

<Steps>
  <Step title="Oluşturma Sayfasına Gitme">
    * Sol menüden **Connection → Kafka** 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_KafkaAudit`
    * 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: "Audit topic producer connection"
    * 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="Kafka Spesifik Parametreler - Properties & Topic">
    * propertiesMap tablosuna broker URL'leri, serializer ayarları ve timeout değerlerini girin.
    * Her kayıt için valueType seçmeyi unutmayın; sayı değerlerinde INTEGER kullanın.
    * Topic Name alanına bağlanılacak topic'i yazın.

    <Tip>
      Birden fazla broker URL'si ekleyerek yüksek erişilebilirlik sağlayabilirsiniz.
    </Tip>
  </Step>

  <Step title="Kafka Spesifik Parametreler - Güvenli Mesajlama">
    * **Enable Secure** toggle'ını açarak TLS'i zorunlu kılın.
    * **Protocol Types** alanında desteklenen SSLContext protokollerini seçin.
    * KeyStore ve TrustStore seçimlerini yapın veya yeni keystore oluşturun.

    <Warning>
      Production ortamında mutlaka SSL/TLS kullanın ve güvenli protokolleri seçin.
    </Warning>
  </Step>

  <Step title="Timeout ve Connection Pool Ayarları">
    * max.block.ms, request.timeout.ms, retry.backoff.ms gibi parametreleri propertiesMap içine ekleyin.
    * Trafik hacmine göre linger.ms, batch.size, connections.max.idle.ms gibi ayarları belirleyin.
  </Step>

  <Step title="Güvenlik ve Authentication Ayarları">
    * SASL/SCRAM kullanılıyorsa sasl.mechanism, sasl.jaas.config anahtarlarını ekleyin.
    * Broker sertifikaları için doğru TrustStore seçildiğinden emin olun.
    * Hassas credential değerlerini plaintext yerine Secret türü MapValue ile saklayın.

    <Warning>
      Hassas bilgileri mutlaka Secret tipinde MapValue olarak saklayın.
    </Warning>
  </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

    <Check>
      Connection başarıyla oluşturuldu! Artık Integration Flow ve Connector adımlarında kullanabilirsiniz.
    </Check>
  </Step>
</Steps>

### Connection'ı Silme

Connection'ı silmek için:

<CardGroup cols={2}>
  <Card title="Yöntem 1: 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 connection'ın aktif durumunu pasif hale getirin.
    * Connection pasif olur ancak silinmez.
    * Gerektiğinde aktif hale getirerek yeniden kullanabilirsiniz.
  </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: 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}-kafka-integration-{ConnectionName}-export.zip`\
        Örnek: `13 Nov 2025-kafka-integration-Production_KafkaAudit-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 Kafka]** 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.
  </Card>

  <Card title="Integration / Connector Adımlarında Kullanım" icon="plug">
    Kafka topic tabanlı mesaj gönderme ve tüketme gerektiren adımlarda connection seçilir. Örnek: "Send Message", "Consume Message", "Kafka Producer", "Kafka Consumer" 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 Kafka'ya mesaj gönderme, telemetri toplama vb.) bağlantı seçilerek Kafka broker'larına 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.
  </Card>
</CardGroup>

## Best Practices

<AccordionGroup>
  <Accordion title="Yapılması Gerekenler ve En İyi Uygulamalar">
    <CardGroup cols={2}>
      <Card title="Topic ve Partition Planlama" icon="list">
        **Kötü:** Tüm mesajları tek partition'a yazmak.\
        **İyi:** Trafiği partition sayısını artırarak yaymak.\
        **En İyi:** Partition planını tüketici sayısı ve throughput ihtiyacına göre per topic belirlemek
      </Card>

      <Card title="PropertiesMap Versiyonlama" icon="code-branch">
        **Kötü:** Değerleri rastgele eklemek.\
        **İyi:** Değişiklikleri manuel takip etmek.\
        **En İyi:** propertiesMap değişikliklerini export dosyalarıyla version control altında tutmak
      </Card>

      <Card title="Sertifika Döngüsü Yönetimi" icon="calendar">
        **Kötü:** Keystore/Truststore son kullanma tarihlerini takip etmemek.\
        **İyi:** Manuel takvim tutmak.\
        **En İyi:** Secret Manager event'leri ve monitoring alarmlarıyla sertifika yenilemelerini otomatik planlamak
      </Card>

      <Card title="Monitoring ve Alerting" icon="chart-line">
        **Kötü:** Connection health'i izlememek.\
        **İyi:** Manuel test yapmak.\
        **En İyi:** Connection Monitoring metriklerini APM/Prometheus ile takip edip otomatik alarm üretmek
      </Card>

      <Card title="Ortam Yönetimi" icon="server">
        **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
      </Card>

      <Card title="Connection Test" icon="flask">
        **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
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Güvenlik En İyi Uygulamaları">
    <CardGroup cols={2}>
      <Card title="SASL Yapılandırması" icon="shield">
        SASL kullanıcı adı/şifresi veya token bilgilerini Secret tipinde MapValue ile saklayın; JAAS config içinde inline credential bırakmayın
      </Card>

      <Card title="Broker Erişim Segmentasyonu" icon="network-wired">
        Kafka broker'larına yalnızca whitelisted IP aralıklarından erişim verin, gerekmeyen portları kapatın
      </Card>

      <Card title="Log Masking" icon="eye-slash">
        Bootstrap veya credential içeren log satırlarını maskeleyin; debug loglarında plaintext credential bırakmayın
      </Card>

      <Card title="Kimlik Bilgileri Yönetimi" icon="lock">
        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
      </Card>

      <Card title="SSL/TLS Kullanımı" icon="shield-halved">
        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
      </Card>

      <Card title="Erişim Kontrolü" icon="user-shield">
        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
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Kaçınılması Gerekenler">
    <CardGroup cols={2}>
      <Card title="Tek Broker URL'si Kullanmamak" icon="exclamation-triangle">
        **Neden kaçınılmalı:** Broker arızasında bağlantı kopar.\
        **Alternatif:** Birden fazla bootstrap.servers adresi tanımlayın
      </Card>

      <Card title="Serializer Tiplerini Yanlış Seçmek" icon="code">
        **Neden kaçınılmalı:** Mesaj deserilize edilemez, hata oluşur.\
        **Alternatif:** Key/Value serializer'ları mesaj formatına göre belirleyin
      </Card>

      <Card title="SASL Parametrelerini Plaintext Tutmak" icon="triangle-exclamation">
        **Neden kaçınılmalı:** Credential sızıntısı riski vardır.\
        **Alternatif:** Secret MapValue kullanın
      </Card>

      <Card title="Production Connection'ı Test Ortamında Kullanma" icon="exclamation-triangle">
        **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\_)
      </Card>

      <Card title="Çok Düşük Timeout Değerleri" icon="clock">
        **Neden kaçınılmalı:** Ağ gecikmelerinde connection sürekli timeout olur, Entegrasyon adımları 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
      </Card>

      <Card title="Connection Pool Kullanmama" icon="layer-group">
        **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
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Performans İpuçları">
    <CardGroup cols={2}>
      <Card title="Batch Boyutu" icon="layer-group">
        **Öneri:** batch.size değerini mesaj boyutuna göre ayarlayın (örn. 32 KB).\
        **Etki:** Daha az ağ çarpışı ile throughput artar
      </Card>

      <Card title="Sıkıştırma" icon="compress">
        **Öneri:** compression.type olarak snappy veya lz4 seçin.\
        **Etki:** Broker üzerindeki bant genişliği azalır
      </Card>

      <Card title="Async Send Kullanımı" icon="arrows-rotate">
        **Öneri:** acks ve linger.ms ayarlarını optimize ederek asenkron üretimi tercih edin.\
        **Etki:** İstemci bekleme süresi kısalır
      </Card>

      <Card title="Connection Pool Optimizasyonu" icon="layer-group">
        **Ö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
      </Card>

      <Card title="Timeout Değerleri Optimizasyonu" icon="clock">
        **Ö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
      </Card>

      <Card title="Connection Monitoring" icon="chart-bar">
        **Ö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
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Sorun Giderme (Troubleshooting)

<AccordionGroup>
  <Accordion title="Topic Bulunamadı">
    <Warning>
      Topic adı hatalı, Broker'da topic oluşturulmamış veya ACL izinleri eksik olabilir.
    </Warning>

    <Steps>
      <Step title="Topic Adı">
        topicName alanını doğrulayın.
      </Step>

      <Step title="Topic Durumu">
        Broker yöneticisinden topic durumunu kontrol ettirin.
      </Step>

      <Step title="ACL İzinleri">
        ACL politikalarına ilgili kullanıcıyı ekleyin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Broker Authentication Hatası">
    <Warning>
      Yanlış SASL bilgisi, sertifika geçersiz veya TrustStore eksik olabilir.
    </Warning>

    <Steps>
      <Step title="SASL Güncelleme">
        SASL MapValue'ları güncelleyin.
      </Step>

      <Step title="Sertifika Kontrolü">
        Sertifikanın süresini kontrol edin.
      </Step>

      <Step title="TrustStore Kontrolü">
        Doğru TrustStore seçildiğinden emin olun.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Connection Timeout">
    <Warning>
      Network gecikmesi, hedef sistem yavaş yanıt veriyor veya timeout değeri çok düşük olabilir.
    </Warning>

    <Steps>
      <Step title="Network Kontrolü">
        Network connectivity kontrol edin.
      </Step>

      <Step title="Sistem Sağlığı">
        Hedef sistem sağlığını kontrol edin.
      </Step>

      <Step title="Timeout Ayarları">
        Timeout değerlerini artırın.
      </Step>

      <Step title="Log İnceleme">
        Connection loglarını inceleyin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Authentication Failed">
    <Warning>
      Yanlış kullanıcı adı/şifre, expired credentials veya yetki problemi olabilir.
    </Warning>

    <Steps>
      <Step title="Kimlik Bilgileri">
        Kimlik bilgilerini doğrulayın.
      </Step>

      <Step title="Kullanıcı Durumu">
        Hedef sistemde kullanıcının aktif olduğunu kontrol edin.
      </Step>

      <Step title="Yetki Kontrolü">
        Gerekli yetkilerin verildiğini kontrol edin.
      </Step>

      <Step title="Sertifika Kontrolü">
        SSL/TLS sertifikalarını kontrol edin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Pool Exhausted">
    <Warning>
      Pool size çok düşük, connection leak var veya trafik çok yüksek olabilir.
    </Warning>

    <Steps>
      <Step title="Pool Size">
        Pool size'ı artırın.
      </Step>

      <Step title="Connection Kontrolü">
        Connection'ların düzgün kapatıldığını kontrol edin.
      </Step>

      <Step title="Idle Timeout">
        Idle connection timeout'ları ayarlayın.
      </Step>

      <Step title="Metrik İzleme">
        Connection kullanım metriklerini izleyin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Connection Test Başarılı Ama Entegrasyon Akışı Hata Veriyor">
    <Warning>
      Integration/Connector adımında farklı connection seçili olabilir, adım yanlış yapılandırılmış olabilir veya Flow/Job redeploy edilmemiş olabilir.
    </Warning>

    <Steps>
      <Step title="Enable Toggle">
        Connection'ın enable toggle'ının aktif olduğunu kontrol edin.
      </Step>

      <Step title="Connection Seçimi">
        Integration Flow'da doğru connection'ın seçildiğini doğrulayın.
      </Step>

      <Step title="Connection Deploy">
        Connection'ı tekrar deploy edin.
      </Step>

      <Step title="Flow/Job Deploy">
        Integration Flow veya Job'ı redeploy edin.
      </Step>

      <Step title="Log Kontrolü">
        Gateway loglarını kontrol edin.
      </Step>
    </Steps>
  </Accordion>
</AccordionGroup>

## Sık Sorulan Sorular (SSS)

<AccordionGroup>
  <Accordion title="Kafka Connection ile birden fazla topic yönetebilir miyim?">
    <Info>
      Aynı Connection tek topic'e odaklanır, fakat farklı topic'ler için hızlıca çoğaltılabilir; bu sayede izinler ve monitoring ayrı tutulur.
    </Info>
  </Accordion>

  <Accordion title="Enable Secure kapalı bırakılabilir mi?">
    <Warning>
      Development ortamı için mümkündür ancak Production'da TLS kapatılması önerilmez; güvenlik politikaları uyarınca açık bırakın.
    </Warning>
  </Accordion>

  <Accordion title="PropertiesMap'e secret değerleri nasıl eklenir?">
    <Info>
      MapValue eklerken valueType olarak SECRET seçin; UI değerleri maskeler ve export sırasında şifrelenmiş saklanır.
    </Info>
  </Accordion>

  <Accordion title="Multi-broker yapılandırmasında sıralama önemli mi?">
    <Info>
      Broker listesi ilk ulaşılabilir sunucuya göre denenir; yüksek erişilebilirlik için DNS round-robin veya bootstrap listesi önerilir.
    </Info>
  </Accordion>

  <Accordion title="Test Connection başarısızsa Deployment yapabilir miyim?">
    <Warning>
      Yapabilirsiniz ancak önerilmez; Deployment sonrası Integration Flow hata vermeye devam eder. Önce testteki hatayı düzeltin.
    </Warning>
  </Accordion>

  <Accordion title="Aynı connection'ı birden fazla Integration Flow'da kullanabilir miyim?">
    <Check>
      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.
    </Check>
  </Accordion>

  <Accordion title="Connection pool kullanmak zorunlu mudur?">
    <Info>
      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.
    </Info>
  </Accordion>

  <Accordion title="Test ve Production için farklı connection'lar mı oluşturmalıyım?">
    <Check>
      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.
    </Check>
  </Accordion>

  <Accordion title="Test Connection başarılı ama Integration Flow'da çalışmıyor, neden?">
    <Warning>
      Birkaç neden olabilir:
    </Warning>

    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
  </Accordion>
</AccordionGroup>
