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

> Configures and manages Kafka connections. You can perform topic-based message sending and consumption operations with SSL/TLS security, store centralized topic access information for Integration Flow or Connector steps in a single location, and manage various Kafka producer/consumer properties

## Overview

<AccordionGroup>
  <Accordion title="What is its Purpose?">
    <CardGroup cols={2}>
      <Card title="Centralized Management" icon="database">
        Kafka Connection stores centralized topic access information for Integration Flow or Connector steps in a single location, making them reusable.
      </Card>

      <Card title="Standard Configuration" icon="gear">
        Manages various Kafka producer/consumer properties through propertiesMap to maintain standard configuration in the messaging infrastructure.
      </Card>

      <Card title="Security" icon="shield">
        When Enable Secure is activated, it enforces SSL/TLS parameters, guaranteeing encryption of critical data traffic.
      </Card>

      <Card title="Test Function" icon="flask">
        Since connection parameters are validated before Deployment through the Test Connection function, the error catching process is accelerated.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

<AccordionGroup>
  <Accordion title="Working Principle">
    <CardGroup cols={2}>
      <Card title="Connection Initiation" icon="play">
        When a Kafka Message Queue connection is requested from within an Integration Flow or Connector, the system reads the configured connection parameters.
      </Card>

      <Card title="Connection Pool Management" icon="layer-group">
        The Kafka producer/consumer pool reuses existing connections or opens new connections using values such as max.block.ms, reconnect.backoff.max.ms defined in propertiesMap.
      </Card>

      <Card title="Authentication" icon="shield">
        If Enable Secure is active, mutual certificate-based Authentication is applied; optionally, SASL/SCRAM information is also read from propertiesMap.
      </Card>

      <Card title="Data Communication" icon="arrows-rotate">
        Messages are sent to or consumed from the topic via Kafka wire protocol over TCP; serializer settings are taken from key.serializer and value.serializer fields in propertiesMap.
      </Card>

      <Card title="Connection Management" icon="gear">
        After the operation is completed, the connection returns to the pool; connections whose enable toggle is deactivated cannot be selected by any Flow.
      </Card>

      <Card title="Error Management" icon="triangle-exclamation">
        In case of connection error, timeout, or authentication error, retry is performed according to retry.backoff.ms and max.block.ms values, and the result is transferred to the Apinizer message service.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Usage Areas">
    <CardGroup cols={2}>
      <Card title="Integration Flow Messaging" icon="network-wired">
        Targeting uniform Kafka topics in "Send Message" or "Consume Message" steps within Integration Flow
      </Card>

      <Card title="Connector Data Collection" icon="plug">
        Sharing centralized Kafka configuration in connector-based data collection processes
      </Card>

      <Card title="Scheduled Job Telemetry" icon="clock">
        Sending telemetry or logs to Kafka at certain intervals in Scheduled Jobs
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Technical Features and Capabilities

<AccordionGroup>
  <Accordion title="Basic Features">
    <CardGroup cols={2}>
      <Card title="Topic-Based Messaging" icon="list">
        Thanks to the mandatory topicName field, each Connection focuses on a specific topic and prevents incorrect topic selection in Integration Flow steps.
      </Card>

      <Card title="Dynamic Kafka PropertiesMap" icon="slider">
        Desired Kafka client parameters are stored in key-value structure through propertiesMap, and string, integer, or secret data are separated thanks to MapValue types.
      </Card>

      <Card title="Built-in Name Uniqueness Check" icon="check-circle">
        The debounce mechanism on the UI prevents creating a Connection with the same name and warns about conflicts early.
      </Card>

      <Card title="Environment-Based Configuration" icon="code-branch">
        Ability to define separate connection parameters for each environment (Development, Test, Production).
      </Card>

      <Card title="Enable/Disable Control" icon="toggle-on">
        Activating or deactivating the Connection (enable/disable toggle). In passive state, the connection cannot be used but its configuration is preserved.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Advanced Features">
    <CardGroup cols={2}>
      <Card title="SASL/SCRAM Support" icon="shield">
        SASL mechanisms are added to propertiesMap, enabling encrypted Authentication scenarios without code changes.
      </Card>

      <Card title="Keystore-Truststore Management" icon="key">
        When Enable Secure is enabled, both KeyStore and TrustStore can be selected, and if necessary, new records are created instantly in Secret Manager.
      </Card>

      <Card title="Dynamic Protocol Selection" icon="network-wired">
        Multiple SSLContext protocols (TLSv1.2, TLSv1.3, etc.) can be selected with MultiSelect and stored on the same Connection.
      </Card>

      <Card title="Connection Test Feature" icon="flask">
        Ability to validate connection parameters before saving with the "Test Connection" button.
      </Card>

      <Card title="Export/Import Feature" icon="file-export">
        Exporting Connection configuration as a ZIP file. Importing to different environments (Development, Test, Production). Version control and backup capability.
      </Card>

      <Card title="Connection Monitoring" icon="chart-line">
        Monitoring connection health, pool status, and performance metrics.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Connection Parameters

<AccordionGroup>
  <Accordion title="Mandatory Parameters">
    <CardGroup cols={2}>
      <Card title="Name" icon="tag">
        **Description:** Connection name (must be unique)\
        **Example Value:** `Production_KafkaTopic01`\
        **Notes:** Should not start with space, special characters should not be used
      </Card>

      <Card title="Environment" icon="server">
        **Description:** Environment ID where the connection will be deployed\
        **Example Value:** `Development`\
        **Notes:** Changing environment provides parametric management within the same Connection
      </Card>

      <Card title="Topic Name" icon="list">
        **Description:** Target topic name on Kafka\
        **Example Value:** `audit.events.v1`\
        **Notes:** The same topic should be used in producer and consumer steps
      </Card>

      <Card title="Properties Map" icon="slider">
        **Description:** Key-value pairs for Kafka client (bootstrap.servers, etc.)\
        **Example Value:** `bootstrap.servers=broker1:9092`\
        **Notes:** At least one record must exist; MapValue types must be selected correctly
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Optional Parameters">
    <CardGroup cols={2}>
      <Card title="Description" icon="file-lines">
        **Description:** Description about the Connection purpose\
        **Default Value:** (Empty)\
        **Recommended Value:** Prod audit topic publish connection
      </Card>

      <Card title="Enable Secure" icon="shield">
        **Description:** Enables SSL/TLS usage\
        **Default Value:** false\
        **Recommended Value:** true (Production)
      </Card>

      <Card title="Protocol Types" icon="network-wired">
        **Description:** Allowed SSLContext protocols when Enable Secure is enabled\
        **Default Value:** (Empty)\
        **Recommended Value:** TLSv1.2, TLSv1.3
      </Card>

      <Card title="KeyStoreId" icon="key">
        **Description:** Keystore resource containing client certificate\
        **Default Value:** (Empty)\
        **Recommended Value:** ks-prod-clients
      </Card>

      <Card title="TrustStoreId" icon="shield-halved">
        **Description:** Truststore resource verifying broker certificate\
        **Default Value:** (Empty)\
        **Recommended Value:** ts-shared-root
      </Card>

      <Card title="Deploy To Worker" icon="server">
        **Description:** Comes as true in connectionConfigKafka.model.ts\
        **Default Value:** true\
        **Recommended Value:** true
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Timeout and Connection Pool Parameters">
    <CardGroup cols={2}>
      <Card title="Connection Timeout" icon="clock">
        **Description:** Maximum wait time for connection establishment\
        **Default:** 3000\
        **Min:** 1000 | **Max:** 60000\
        **Unit:** milliseconds
      </Card>

      <Card title="Request Timeout" icon="hourglass">
        **Description:** Maximum wait time for request response\
        **Default:** 3000\
        **Min:** 1000 | **Max:** 120000\
        **Unit:** milliseconds
      </Card>

      <Card title="Pool Size" icon="layer-group">
        **Description:** Maximum number of connections in Connection pool (client instance)\
        **Default:** 10\
        **Min:** 1 | **Max:** 200\
        **Unit:** count
      </Card>

      <Card title="Retry Backoff" icon="repeat">
        **Description:** retry.backoff.ms value, wait between retries\
        **Default:** 3000\
        **Min:** 100 | **Max:** 10000\
        **Unit:** milliseconds
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Usage Scenarios

<CardGroup cols={2}>
  <Card title="Real-Time Audit" icon="chart-line">
    **Situation:** All services should publish messages to audit topic\
    **Solution:** topicName=audit.events, bootstrap.servers=cluster-prod:9092\
    **Expected Behavior:** Audit messages are collected in a single topic, audit team consumes from a single point
  </Card>

  <Card title="Multi-Environment Management" icon="code-branch">
    **Situation:** Same Connection should be used in different environments\
    **Solution:** Environment=Development, Enable Secure=false\
    **Expected Behavior:** Different broker URLs are managed with environment selection
  </Card>

  <Card title="Secure Production Publishing" icon="shield">
    **Situation:** Prod broker requires TLS\
    **Solution:** Enable Secure=true, ProtocolTypes=TLSv1.3, KeyStoreId=ks-prod\
    **Expected Behavior:** Certificate verification is ensured, messages are sent encrypted
  </Card>

  <Card title="High Traffic Queue" icon="chart-bar">
    **Situation:** Sudden traffic increase\
    **Solution:** Pool Size=50, linger.ms=5, batch.size=32768\
    **Expected Behavior:** Producer batches grow, throughput increases
  </Card>

  <Card title="Retry Optimization" icon="repeat">
    **Situation:** Broker occasionally does not respond\
    **Solution:** retry.backoff.ms=5000, retries=10\
    **Expected Behavior:** No message loss with automatic retries
  </Card>

  <Card title="SLA Monitoring (optional)" icon="gauge">
    **Situation:** Message delays should be measured\
    **Solution:** delivery.timeout.ms=60000, enable.idempotence=true\
    **Expected Behavior:** Producer timeouts are logged, SLA reports are fed
  </Card>
</CardGroup>

## Connection Configuration

### Creating New Kafka

<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" />

#### Configuration Steps

<Steps>
  <Step title="Navigate to Creation Page">
    * Go to **Connection → Kafka** section from the left menu.
    * Click the **\[+ Create]** button in the top right.
  </Step>

  <Step title="Enter Basic Information">
    **Enable Status (Active Status):**

    * Set active/passive status with toggle. New connections are active by default.

    **Name - Mandatory:**

    * Example: `Production_KafkaAudit`
    * Enter a unique name, should not start with space.
    * System automatically checks. Green checkmark: available. Red cross: existing name.

    **Description:**

    * Example: "Audit topic producer connection"
    * Max. 1000 characters.
    * Describe the purpose of the Connection.

    <Info>
      In the action button area at the top of the page, you can use the **\[\<> Variable]** button to select dynamic values, and with global variables, you can manage connection parameters with variable-based values instead of fixed values. For detailed information, review the [Dynamic Variables](/en/concepts/core-concepts/dynamic-variables) page.
    </Info>
  </Step>

  <Step title="Environment Selection">
    * Select environment from dropdown menu: **Development**, **Test**, or **Production**.
    * Different connection parameters can be defined for each environment.
  </Step>

  <Step title="Kafka Specific Parameters - Properties & Topic">
    * Enter broker URLs, serializer settings, and timeout values in the propertiesMap table.
    * Don't forget to select valueType for each record; use INTEGER for numeric values.
    * Write the topic to connect to in the Topic Name field.

    <Tip>
      You can achieve high availability by adding multiple broker URLs.
    </Tip>
  </Step>

  <Step title="Kafka Specific Parameters - Secure Messaging">
    * Enable TLS by turning on the **Enable Secure** toggle.
    * Select supported SSLContext protocols in the **Protocol Types** field.
    * Select KeyStore and TrustStore or create a new keystore.

    <Warning>
      Always use SSL/TLS in Production environment and select secure protocols.
    </Warning>
  </Step>

  <Step title="Timeout and Connection Pool Settings">
    * Add parameters such as max.block.ms, request.timeout.ms, retry.backoff.ms to propertiesMap.
    * Determine settings such as linger.ms, batch.size, connections.max.idle.ms according to traffic volume.
  </Step>

  <Step title="Security and Authentication Settings">
    * If using SASL/SCRAM, add sasl.mechanism, sasl.jaas.config keys.
    * Ensure the correct TrustStore is selected for broker certificates.
    * Store sensitive credential values as Secret type MapValue instead of plaintext.

    <Warning>
      Always store sensitive information as Secret type MapValue.
    </Warning>
  </Step>

  <Step title="Test Connection">
    * Click the **\[Test Connection]** button.
    * Test whether connection parameters are correct.
    * **Success:** Green confirmation message
    * **Failed:** Error details are shown
  </Step>

  <Step title="Saving">
    * Click the **\[Save and Deploy]** button in the top right.

    **Checklist:**

    * Unique name
    * Mandatory fields filled
    * Test connection successful (recommended)

    **Result:**

    * Connection is added to the list
    * Becomes available for use in Integration Flow and Connector steps
    * Becomes active according to environment

    <Check>
      Connection created successfully! You can now use it in Integration Flow and Connector steps.
    </Check>
  </Step>
</Steps>

### Deleting Connection

<CardGroup cols={2}>
  <Card title="Deletion Process" icon="trash">
    Select **Delete** from the **⋮** menu at the end of the row or click the **\[Delete]** button on the connection detail page
  </Card>

  <Card title="Deletion Tips" icon="info-circle">
    **Check Before Deleting:** It may be used in Integration Flow or Connector steps. If necessary, assign an alternative connection. Back up with **Export** before deleting

    **Alternative: Deactivation**

    * Use the **Disable** option instead of deleting.
    * Connection becomes passive but is not deleted.
    * Can be reactivated when needed.
  </Card>
</CardGroup>

### Exporting/Importing Connection

<Info>
  In this step, users can export existing connections for backup, transfer to different environments, or sharing purposes, or import a previously exported connection again. This process is used to maintain data integrity in version management, transitions between test and production environments, or inter-team sharing processes.
</Info>

<AccordionGroup>
  <Accordion title="Export">
    <CardGroup cols={2}>
      <Card title="Method 1" icon="download">
        Select **⋮ → Export** from the action menu. ZIP file is automatically downloaded.
      </Card>

      <Card title="Method 2" icon="file-export">
        Click the **\[Export]** button on the connection detail page. ZIP file is downloaded.
      </Card>

      <Card title="File Format" icon="file-zipper">
        Format: `Date-connection-ConnectionName-export.zip`\
        Example: `13 Nov 2025-connection-Production_Kafka-export.zip`
      </Card>

      <Card title="ZIP Contents" icon="folder-open">
        * Connection JSON file
        * Metadata information
        * Dependency information (e.g., certificates, key store)
      </Card>

      <Card title="Usage Areas" icon="list-check">
        * Backup
        * Transfer between environments (Test → Prod)
        * Versioning
        * Team or project-based sharing
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Import">
    <CardGroup cols={2}>
      <Card title="Import Steps" icon="upload">
        * Click the **\[Import Kafka]** button on the main list.
        * Select the downloaded ZIP file.
        * System checks: Is format valid? Is there a name conflict? Are dependencies present?
        * Then click the **\[Import]** button.
      </Card>

      <Card title="Import Scenarios" icon="info-circle">
        **Scenario 1: Name Conflict** → Overwrite the old connection or create with a new name.

        **Scenario 2: Missing Dependencies** → Create missing certificates or key stores first or exclude them during import.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

### Usage Areas of Connection

<CardGroup cols={2}>
  <Card title="Creating and Activating Connection" icon="plus-circle">
    **Steps:**

    1. Create the Connection.
    2. Validate the connection with **Test Connection**.
    3. Save and activate with **Save and Deploy**.
    4. Ensure the Connection is in **Enabled** status
  </Card>

  <Card title="Usage in Integration / Connector Steps" icon="plug">
    Connection is selected in steps that require communication with external systems such as message queue (queue), topic, email, FTP/SFTP, LDAP, or similar. Example: Steps such as "Send Message", "Consume Message", "Upload File", "Read Directory". Connection selection is made from the **Connection** field in the configuration of these steps
  </Card>

  <Card title="Scheduled Job Usage" icon="clock">
    In scheduled tasks (e.g., sending messages at certain intervals, file processing, etc.), access to external systems is provided by selecting the connection. When the connection changes, the job execution behavior is updated accordingly
  </Card>

  <Card title="Usage for Testing Purposes" icon="flask">
    The correctness of the connection can be checked independently of the Integration Flow with the Connection Test feature. This test is critical in the debugging process
  </Card>
</CardGroup>

## Best Practices

<AccordionGroup>
  <Accordion title="Things to Do and Best Practices">
    <CardGroup cols={2}>
      <Card title="Topic and Partition Planning" icon="list">
        **Bad:** Writing all messages to a single partition.\
        **Good:** Spreading traffic by increasing partition count.\
        **Best:** Determining partition plan per topic according to consumer count and throughput needs
      </Card>

      <Card title="PropertiesMap Versioning" icon="code-branch">
        **Bad:** Adding values randomly.\
        **Good:** Manually tracking changes.\
        **Best:** Keeping propertiesMap changes under version control with export files
      </Card>

      <Card title="Certificate Lifecycle Management" icon="calendar">
        **Bad:** Not tracking keystore/truststore expiration dates.\
        **Good:** Keeping a manual calendar.\
        **Best:** Automatically planning certificate renewals with Secret Manager events and monitoring alarms
      </Card>

      <Card title="Monitoring and Alerting" icon="chart-line">
        **Bad:** Not monitoring connection health.\
        **Good:** Performing manual tests.\
        **Best:** Tracking Connection Monitoring metrics with APM/Prometheus and generating automatic alarms
      </Card>

      <Card title="Environment Management" icon="server">
        **Bad:** Using the same connection parameters in all environments.\
        **Good:** Creating separate connections for each environment.\
        **Best:** Managing all environments in a single connection using the Environment option, only changing environment when transitioning between environments
      </Card>

      <Card title="Connection Test" icon="flask">
        **Bad:** Saving and deploying the connection without testing.\
        **Good:** Validating with Test Connection before saving.\
        **Best:** Testing after every parameter change, performing full integration test in test environment before going to production
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Security Best Practices">
    <CardGroup cols={2}>
      <Card title="SASL Configuration" icon="shield">
        Store SASL username/password or token information as Secret type MapValue; do not leave inline credentials in JAAS config
      </Card>

      <Card title="Broker Access Segmentation" icon="network-wired">
        Grant access to Kafka brokers only from whitelisted IP ranges, close unnecessary ports
      </Card>

      <Card title="Log Masking" icon="eye-slash">
        Mask log lines containing bootstrap or credentials; do not leave plaintext credentials in debug logs
      </Card>

      <Card title="Credential Management" icon="lock">
        Store sensitive information such as usernames and passwords using environment variables or secret manager. Do not hardcode credentials in code or configuration files. Update passwords periodically
      </Card>

      <Card title="SSL/TLS Usage" icon="shield-halved">
        Always enable SSL/TLS in Production environment. Use self-signed certificates only in development environment. Track certificate expiration dates and renew them on time
      </Card>

      <Card title="Access Control" icon="user-shield">
        Allow only authorized users to change Connection configuration. Store connection change logs. Apply change approval process for critical connections
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Things to Avoid">
    <CardGroup cols={2}>
      <Card title="Not Using Multiple Broker URLs" icon="exclamation-triangle">
        **Why to avoid:** Connection breaks in broker failure.\
        **Alternative:** Define multiple bootstrap.servers addresses
      </Card>

      <Card title="Selecting Wrong Serializer Types" icon="code">
        **Why to avoid:** Messages cannot be deserialized, error occurs.\
        **Alternative:** Determine key/value serializers according to message format
      </Card>

      <Card title="Keeping SASL Parameters as Plaintext" icon="triangle-exclamation">
        **Why to avoid:** Risk of credential leakage.\
        **Alternative:** Use Secret MapValue
      </Card>

      <Card title="Using Production Connection in Test Environment" icon="exclamation-triangle">
        **Why to avoid:** Test data may be written to production system, real users may be affected, security risk occurs.\
        **Alternative:** Create separate connections for each environment, use environment parameter, separate connection names by adding prefix according to environment (Test\_, Prod\_)
      </Card>

      <Card title="Very Low Timeout Values" icon="clock">
        **Why to avoid:** Connection constantly times out in network delays, Integration steps fail.\
        **Alternative:** Adjust timeout values according to real usage scenarios, measure network latency and determine timeouts accordingly
      </Card>

      <Card title="Not Using Connection Pool" icon="layer-group">
        **Why to avoid:** New connection is opened for each request, performance decreases, resource consumption increases, target system load increases.\
        **Alternative:** Enable connection pool, adjust pool size according to traffic volume, set up pool monitoring
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Performance Tips">
    <CardGroup cols={2}>
      <Card title="Batch Size" icon="layer-group">
        **Recommendation:** Adjust batch.size value according to message size (e.g., 32 KB).\
        **Effect:** Throughput increases with less network collision
      </Card>

      <Card title="Compression" icon="compress">
        **Recommendation:** Select snappy or lz4 as compression.type.\
        **Effect:** Bandwidth on broker decreases
      </Card>

      <Card title="Using Async Send" icon="arrows-rotate">
        **Recommendation:** Prefer asynchronous production by optimizing acks and linger.ms settings.\
        **Effect:** Client wait time shortens
      </Card>

      <Card title="Connection Pool Optimization" icon="layer-group">
        **Recommendation:** Adjust pool size according to peak traffic (recommended: concurrent request count × 1.5), set idle connection timeouts, perform pool health check.\
        **Effect:** Connection opening cost decreases by 80%, response times decrease, resource usage is optimized
      </Card>

      <Card title="Timeout Values Optimization" icon="clock">
        **Recommendation:** Measure real network latency, adjust timeout values accordingly, avoid very low or very high timeouts.\
        **Effect:** Unnecessary waits are prevented, fast fail-over is provided, user experience improves
      </Card>

      <Card title="Connection Monitoring" icon="chart-bar">
        **Recommendation:** Monitor connection pool usage, track timeout rates, perform connection health check, set up alerting.\
        **Effect:** Problems are detected proactively, performance bottlenecks are identified early, downtime decreases
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Topic Not Found">
    <Warning>
      Topic name may be incorrect, topic may not be created on Broker, or ACL permissions may be missing.
    </Warning>

    <Steps>
      <Step title="Topic Name">
        Verify the topicName field.
      </Step>

      <Step title="Topic Status">
        Check topic status from broker administrator.
      </Step>

      <Step title="ACL Permissions">
        Add the relevant user to ACL policies.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Broker Authentication Error">
    <Warning>
      Wrong SASL information, certificate invalid, or TrustStore missing.
    </Warning>

    <Steps>
      <Step title="SASL Update">
        Update SASL MapValues.
      </Step>

      <Step title="Certificate Check">
        Check certificate expiration.
      </Step>

      <Step title="TrustStore Check">
        Ensure correct TrustStore is selected.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Connection Timeout">
    <Warning>
      Network delay, target system responding slowly, or timeout value may be too low.
    </Warning>

    <Steps>
      <Step title="Network Check">
        Check network connectivity.
      </Step>

      <Step title="System Health">
        Check target system health.
      </Step>

      <Step title="Timeout Settings">
        Increase timeout values.
      </Step>

      <Step title="Log Review">
        Review connection logs.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Authentication Failed">
    <Warning>
      Wrong username/password, expired credentials, or permission problem may exist.
    </Warning>

    <Steps>
      <Step title="Credentials">
        Verify credentials.
      </Step>

      <Step title="User Status">
        Check that the user is active in the target system.
      </Step>

      <Step title="Permission Check">
        Check that necessary permissions are granted.
      </Step>

      <Step title="Certificate Check">
        Check SSL/TLS certificates.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Pool Exhausted">
    <Warning>
      Pool size may be too low, connection leak exists, or traffic may be too high.
    </Warning>

    <Steps>
      <Step title="Pool Size">
        Increase pool size.
      </Step>

      <Step title="Connection Check">
        Check that connections are properly closed.
      </Step>

      <Step title="Idle Timeout">
        Set idle connection timeouts.
      </Step>

      <Step title="Metric Monitoring">
        Monitor connection usage metrics.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Connection Test Successful But Integration Flow Gives Error">
    <Warning>
      A different connection may be selected in Integration/Connector step, the step may be misconfigured, or Flow/Job may not be redeployed.
    </Warning>

    <Steps>
      <Step title="Enable Toggle">
        Check that the Connection's enable toggle is active.
      </Step>

      <Step title="Connection Selection">
        Verify that the correct connection is selected in Integration Flow.
      </Step>

      <Step title="Connection Deploy">
        Redeploy the Connection.
      </Step>

      <Step title="Flow/Job Deploy">
        Redeploy Integration Flow or Job.
      </Step>

      <Step title="Log Check">
        Check Gateway logs.
      </Step>
    </Steps>
  </Accordion>
</AccordionGroup>

## Frequently Asked Questions (FAQ)

<AccordionGroup>
  <Accordion title="Can I manage multiple topics with Kafka Connection?">
    <Info>
      The same Connection focuses on a single topic, but can be quickly duplicated for different topics; this way permissions and monitoring are kept separate.
    </Info>
  </Accordion>

  <Accordion title="Can Enable Secure be left closed?">
    <Warning>
      It is possible for Development environment but not recommended to close TLS in Production; keep it open according to security policies.
    </Warning>
  </Accordion>

  <Accordion title="How are secret values added to PropertiesMap?">
    <Info>
      When adding MapValue, select SECRET as valueType; UI masks values and stores them encrypted during export.
    </Info>
  </Accordion>

  <Accordion title="Is ordering important in multi-broker configuration?">
    <Info>
      Broker list is tried according to the first reachable server; DNS round-robin or bootstrap list is recommended for high availability.
    </Info>
  </Accordion>

  <Accordion title="Can I deploy if Test Connection fails?">
    <Warning>
      You can, but it is not recommended; Integration Flow will continue to give errors after Deployment. Fix the error in the test first.
    </Warning>
  </Accordion>

  <Accordion title="Can I use the same connection in multiple Integration Flows?">
    <Check>
      Yes, the same connection can be used in multiple Integration Flow or Connector steps. This provides centralized management and guarantees configuration consistency. However, changes made to the connection will affect all usage locations, so care should be taken.
    </Check>
  </Accordion>

  <Accordion title="Is using Connection pool mandatory?">
    <Info>
      Using Connection pool is not mandatory but strongly recommended in high-traffic systems. Reusing existing connections instead of opening a new connection for each request significantly increases performance.
    </Info>
  </Accordion>

  <Accordion title="Should I create different connections for Test and Production?">
    <Check>
      Yes, it is recommended to create separate connections for each environment. Alternatively, you can manage all environments in a single connection using the environment parameter. This approach provides easier management and less error risk.
    </Check>
  </Accordion>

  <Accordion title="Test Connection is successful but not working in Integration Flow, why?">
    <Warning>
      Several reasons may exist:
    </Warning>

    1. Connection enable toggle may be passive
    2. A different connection may be selected in Integration step
    3. Connection may not be deployed
    4. Integration Flow may not have been redeployed yet
  </Accordion>
</AccordionGroup>
