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

# RabbitMQ Queue Connections

> Configures and uses RabbitMQ Queue Connections. You can perform message queue management with AMQP protocol and secure messaging with cluster support

## Overview

<AccordionGroup>
  <Accordion title="What is its Purpose?">
    <CardGroup cols={1}>
      <Card title="AMQP Message Publishing" icon="send">
        Enables Integration Flow steps within Apinizer to reliably publish messages over AMQP
      </Card>

      <Card title="High Availability" icon="activity">
        Provides high availability among brokers in the cluster by defining multiple host/port
      </Card>

      <Card title="Flexible Message Format" icon="file-text">
        Transmits log messages, telemetry, or business data to the target queue in appropriate format with virtual host and basic properties fields
      </Card>

      <Card title="Secure Messaging" icon="shield">
        Guarantees secure messaging with optional Authentication and SSL/TLS support
      </Card>
    </CardGroup>
  </Accordion>

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

      <Card title="Connection Pool Management" icon="database">
        Broker is selected with round-robin strategy according to defined hostPortList, if there is no existing open connection, a new AMQP connection is created in the pool
      </Card>

      <Card title="Authentication" icon="lock">
        If Authentication toggle is activated, authentication is performed to the target system with username/password, or if SSL/TLS is enabled, by verifying the certificate chain
      </Card>

      <Card title="Data Communication" icon="send">
        Channel is opened over AMQP protocol, message is published with channelExchange and channelRoutingKey parameters; basic properties fields carry message metadata
      </Card>

      <Card title="Connection Management" icon="settings">
        After the operation is completed, the connection returns to the pool; it is automatically closed when idle time is exceeded
      </Card>

      <Card title="Error Management" icon="alert-circle">
        In case of connection error, timeout, or authentication error, retry and fallback host attempt, warning logs, and detailed error message are sent to the user
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Usage Areas">
    <CardGroup cols={2}>
      <Card title="Log and Audit" icon="file-text">
        Sending log, audit, and monitoring events to RabbitMQ-based central queue
      </Card>

      <Card title="Event Triggering" icon="zap">
        AMQP topic/queue integrations to trigger commands or events to external systems
      </Card>

      <Card title="Microservice Messaging" icon="workflow">
        Messaging between distributed microservices in high-volume data processing pipelines
      </Card>

      <Card title="Managed RabbitMQ Integration" icon="cloud">
        Secure connection to third-party Message Queue infrastructures (e.g., managed RabbitMQ)
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Technical Features and Capabilities

<AccordionGroup>
  <Accordion title="Basic Features">
    <CardGroup cols={2}>
      <Card title="Multiple Host/Port Definition" icon="network-wired">
        Automatic failover is provided by adding multiple broker addresses.
      </Card>

      <Card title="Virtual Host Management" icon="layers">
        Tenant-based isolation is supported with connectionFactoryVirtualHost field.
      </Card>

      <Card title="AMQP Basic Properties Template" icon="file-code">
        Fields such as AppId, ContentType, Priority are predefined to standardize message format.
      </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="Authentication Toggle" icon="shield">
        Can be disabled for brokers that do not require authentication, username/password becomes mandatory when needed.
      </Card>

      <Card title="SSL/TLS Protocol Selection" icon="shield-check">
        TLS version can be freely written, self-signed certificates can be tested in development environment.
      </Card>

      <Card title="Heartbeat and Channel Limits" icon="heart">
        Broker capacity is adapted with RequestedChannelMax, RequestedFrameMax, and RequestedHeartbeat values.
      </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={1}>
      <Card title="Name" icon="tag">
        **Description:** Connection name (must be unique)\
        **Example Value:** `Production_RabbitMQ`\
        **Notes:** Should not start with space, special characters should not be used
      </Card>

      <Card title="Host/Port List" icon="server">
        **Description:** Host and port pair for each broker\
        **Example Value:** `mq1.internal.local:5672`\
        **Notes:** At least one row is mandatory; host and port must be filled in all rows
      </Card>

      <Card title="Connection Factory Virtual Host" icon="layers">
        **Description:** AMQP virtual host name\
        **Example Value:** `/apinizer`\
        **Notes:** Must match the vhost name in RabbitMQ management console
      </Card>

      <Card title="Connection Factory Connection Timeout" icon="clock">
        **Description:** Time to wait until AMQP connection is established\
        **Example Value:** `60000`\
        **Notes:** In ms; value 0 means unlimited wait
      </Card>

      <Card title="Requested Channel Max" icon="maximize">
        **Description:** Maximum number of channels per connection\
        **Example Value:** `2047`\
        **Notes:** Should not exceed broker limit
      </Card>

      <Card title="Requested Frame Max" icon="maximize-2">
        **Description:** AMQP frame size limit\
        **Example Value:** `0`\
        **Notes:** Value 0 uses broker default
      </Card>

      <Card title="Requested Heartbeat" icon="heart">
        **Description:** Heartbeat interval with broker\
        **Example Value:** `60`\
        **Notes:** In seconds; 0 -> heartbeat disabled
      </Card>

      <Card title="Channel Routing Key" icon="key">
        **Description:** Queue or topic key to route the message\
        **Example Value:** `apinizer.audit.queue`\
        **Notes:** Recommended to keep same as queue name
      </Card>

      <Card title="Basic Properties AppId" icon="code">
        **Description:** Application ID that created the message\
        **Example Value:** `apinizer`\
        **Notes:** Can be tracked in API logs
      </Card>

      <Card title="Basic Properties ContentType" icon="file-text">
        **Description:** Message body format\
        **Example Value:** `application/json`\
        **Notes:** Values such as application/xml are supported
      </Card>

      <Card title="Basic Properties ContentEncoding" icon="type">
        **Description:** Content character set\
        **Example Value:** `UTF-8`\
        **Notes:** Broker and consumer must use the same encoding
      </Card>

      <Card title="Basic Properties DeliveryMode" icon="send">
        **Description:** Delivery mode 1 (transient) or 2 (persistent)\
        **Example Value:** `2`\
        **Notes:** Must select 2 for persistence
      </Card>

      <Card title="Basic Properties Priority" icon="arrow-up">
        **Description:** Message priority (0-9)\
        **Example Value:** `5`\
        **Notes:** Queue priority must be enabled
      </Card>

      <Card title="Basic Properties ReplyTo" icon="reply">
        **Description:** Queue to return the response\
        **Example Value:** `apinizer.reply`\
        **Notes:** Mandatory in Request/Reply patterns
      </Card>

      <Card title="Basic Properties Expiration" icon="clock">
        **Description:** TTL value of the message (ms)\
        **Example Value:** `60000`\
        **Notes:** Should not exceed queue policy
      </Card>

      <Card title="Basic Properties Type" icon="tag">
        **Description:** Defines message type\
        **Example Value:** `apinizer-log-type`\
        **Notes:** Used for filtering in consumer
      </Card>

      <Card title="Basic Properties UserId" icon="user">
        **Description:** RabbitMQ user ID\
        **Example Value:** `guest`\
        **Notes:** Broker verifies if Authentication is enabled
      </Card>

      <Card title="Basic Properties ClusterId" icon="network">
        **Description:** Broker cluster ID\
        **Example Value:** `cluster-eu-central`\
        **Notes:** Used in cluster observability reports
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Optional Parameters">
    <CardGroup cols={1}>
      <Card title="Description" icon="file-text">
        **Description:** Description about Connection purpose\
        **Default Value:** -\
        **Recommended Value:** Specify process or project name
      </Card>

      <Card title="Channel Exchange" icon="repeat">
        **Description:** Exchange name to publish the message\
        **Default Value:** ""\
        **Recommended Value:** apinizer.audit.exchange
      </Card>

      <Card title="Authentication Enabled" icon="lock">
        **Description:** Authentication requirement toggle\
        **Default Value:** false\
        **Recommended Value:** true in Production environment
      </Card>

      <Card title="Connection Factory Username" icon="user">
        **Description:** Username if Authentication is enabled\
        **Default Value:** guest\
        **Recommended Value:** Use a separate service account
      </Card>

      <Card title="Connection Factory Password" icon="key">
        **Description:** Password for the user\
        **Default Value:** guest\
        **Recommended Value:** Strong password managed through Secret Manager
      </Card>

      <Card title="Connection Factory Use SSL Protocol" icon="shield">
        **Description:** SSL/TLS usage status\
        **Default Value:** false\
        **Recommended Value:** true in Production
      </Card>

      <Card title="Connection Factory SSL Protocol" icon="shield-check">
        **Description:** TLS version to use\
        **Default Value:** TLSv1.2\
        **Recommended Value:** TLSv1.3 according to broker support
      </Card>

      <Card title="Channel Exchange Binding" icon="link">
        **Description:** Note about relationship between exchange and routing key\
        **Default Value:** -\
        **Recommended Value:** Keep environment-based table
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

### Timeout and Connection Pool Parameters

<CardGroup cols={2}>
  <Card title="Connection Timeout" icon="clock">
    **Description:** Maximum wait time for connection establishment\
    **Default:** 60000 ms\
    **Min:** 1000 ms | **Max:** 300000 ms
  </Card>

  <Card title="Request Timeout" icon="hourglass">
    **Description:** Response wait time for message sending\
    **Default:** 30000 ms\
    **Min:** 5000 ms | **Max:** 120000 ms
  </Card>

  <Card title="Pool Size" icon="layer-group">
    **Description:** Maximum number of connections in Connection pool\
    **Default:** 10\
    **Min:** 1 | **Max:** 100
  </Card>

  <Card title="Heartbeat Interval" icon="heart">
    **Description:** Heartbeat time with broker\
    **Default:** 60 seconds\
    **Min:** 0 | **Max:** 300 seconds
  </Card>
</CardGroup>

## Usage Scenarios

<CardGroup cols={2}>
  <Card title="Log Streaming" icon="file-text">
    **Situation:** Transferring Gateway logs to central queue\
    **Solution:** channelRoutingKey=apinizer.logs, deliveryMode=2\
    **Expected Result:** All log messages are collected in persistent queue
  </Card>

  <Card title="Audit Trail" icon="shield">
    **Situation:** Monitoring authorized operations\
    **Solution:** basicPropertiesType=audit, SSL enabled\
    **Expected Result:** Secure audit messages reach consumer service
  </Card>

  <Card title="Event Fan-out" icon="send">
    **Situation:** Publishing to multiple consumers\
    **Solution:** channelExchange=apinizer.events, topic exchange\
    **Expected Result:** All subscribers receive messages according to routing key pattern
  </Card>

  <Card title="Failover Cluster" icon="activity">
    **Situation:** Continuity when a broker goes down\
    **Solution:** Adding at least 3 nodes to hostPortList\
    **Expected Result:** Connection automatically switches to another node
  </Card>

  <Card title="Long Queue TTL" icon="clock">
    **Situation:** Time-sensitive tasks\
    **Solution:** basicPropertiesExpiration=120000, lowering priority\
    **Expected Result:** Messages are automatically deleted after 2 minutes
  </Card>

  <Card title="Low Latency Jobs" icon="zap">
    **Situation:** Fast command transmission\
    **Solution:** connectionFactoryRequestedHeartbeat=30, pool size=20\
    **Expected Result:** Latency decreases, throughput increases
  </Card>
</CardGroup>

## Connection Configuration

### Creating New RabbitMQ Connection

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

<Steps>
  <Step title="Navigate to Creation Page">
    Go to **Connection → RabbitMQ Connection** 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_RabbitMQ`

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

    **Description:**

    Example: "RabbitMQ log publishing 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="Host and Virtual Host Parameters">
    Add broker addresses with **Add Host** button.

    Host and port fields must be filled in each row.

    Write the vhost value on the broker in the **Connection Factory Virtual Host** field.
  </Step>

  <Step title="Channel and Message Parameters">
    Enter **Channel Exchange** value (if any).

    Fill **Channel Routing Key**, **Basic Properties** fields according to RabbitMQ consumer requirements.

    Determine delivery mode (1/2) and priority.
  </Step>

  <Step title="Timeout and Connection Pool Settings">
    Adjust **Connection Timeout**, **Requested Frame/Channel Max**, **Requested Heartbeat** fields according to traffic volume.

    Pool Size is updated from management screen according to corporate standards.
  </Step>

  <Step title="Security and Authentication Settings">
    Activate **Authentication Enabled** toggle.

    Fill Username/Password fields.

    If SSL is required, turn on **Use SSL Protocol** toggle and specify TLS version.
  </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
  </Card>

  <Card title="Alternative: Deactivation" icon="toggle-off">
    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_RabbitMQ-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 RabbitMQ Connection]** 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="workflow">
    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="check-circle">
    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="Cluster Reachability" icon="activity">
        **Bad:** Defining a single host\
        **Good:** Adding two hosts\
        **Best:** Adding all broker nodes to hostPortList and ordering according to health check results
      </Card>

      <Card title="Routing Key Management" icon="key">
        **Bad:** Using random routing keys\
        **Good:** Using queue name as routing key\
        **Best:** Naming in `domain.context.event` format to provide maintenance ease
      </Card>

      <Card title="Message TTL Strategy" icon="clock">
        **Bad:** Leaving Expiration field empty\
        **Good:** Defining default 60 seconds\
        **Best:** Creating environment-based TTL sets according to business requirements
      </Card>

      <Card title="Authentication Strategy" icon="lock">
        **Bad:** Using `guest/guest` credentials in all environments\
        **Good:** Creating different user for Production\
        **Best:** Applying service accounts with only necessary permissions and secret rotation policy
      </Card>

      <Card title="Environment Management" icon="layers">
        **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="check-circle">
        **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="RabbitMQ User Permissions" icon="user-check">
        Grant user only necessary vhost and queue permissions; manage configure/write/read permissions separately
      </Card>

      <Card title="AMQP Certificate Management" icon="shield">
        If SSL/TLS is enabled, add broker certificates to keystore, track expiration dates, plan renewal in advance
      </Card>

      <Card title="Audit and Logging" icon="file-text">
        Send authentication errors and SSL negotiation logs to central log pool, generate alarms through SIEM
      </Card>

      <Card title="Credential Management" icon="key">
        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-check">
        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="lock">
        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="Overloading Single Queue" icon="alert-triangle">
        **Why to avoid:** Single routing key routes all messages to the same queue, bottleneck occurs\
        **Alternative:** Define different routing keys according to message type
      </Card>

      <Card title="Setting Heartbeat to 0" icon="alert-triangle">
        **Why to avoid:** Broker cannot detect connection drops\
        **Alternative:** Use at least 30-second heartbeat
      </Card>

      <Card title="Sharing SSL Certificate" icon="alert-triangle">
        **Why to avoid:** Copying certificate creates security vulnerability\
        **Alternative:** Use separate certificate/credential for each environment
      </Card>

      <Card title="Using Production Connection in Test Environment" icon="alert-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="alert-triangle">
        **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="alert-triangle">
        **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="Message Size Management" icon="file">
        **Recommendation:** Fragment messages above 128 KB or use gzip\
        **Effect:** Risk of hitting FrameMax limit decreases, throughput increases
      </Card>

      <Card title="Routing Key Templates" icon="key">
        **Recommendation:** Use `service.region.event` pattern\
        **Effect:** Consumers easily filter with pattern, subscription count decreases
      </Card>

      <Card title="Heartbeat Setting" icon="heart">
        **Recommendation:** Use 60 sec heartbeat in WAN connections, 30 sec in LAN\
        **Effect:** Drops are quickly detected, unnecessary reconnect is prevented
      </Card>

      <Card title="Connection Pool Optimization" icon="database">
        **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="hourglass">
        **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="activity">
        **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="Message Rejected by Broker">
    <Warning>
      Wrong routing key, exchange binding missing, or user may not have write permission.
    </Warning>

    <Steps>
      <Step title="Exchange/Queue Binding">
        Check exchange/queue bindings.
      </Step>

      <Step title="Routing Key Test">
        Test routing key from broker.
      </Step>

      <Step title="User Permissions">
        Update user permissions.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="SSL Handshake Failure">
    <Warning>
      Wrong TLS version, certificate chain missing, or self-signed certificate may be used in Production.
    </Warning>

    <Steps>
      <Step title="TLS Version">
        Verify TLS version supported by broker.
      </Step>

      <Step title="Certificate Loading">
        Reload certificate to keystore.
      </Step>

      <Step title="CA-Signed Certificate">
        Use CA-signed certificate in Production.
      </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 send both log and business data with the same RabbitMQ Connection?">
    <Info>
      Yes, but routing key and basic properties fields need to be customized in different Integration Flow steps.
    </Info>
  </Accordion>

  <Accordion title="Do I have to use DNS instead of IP in host list?">
    <Info>
      No, IP can also be used but using DNS reduces maintenance cost in node changes.
    </Info>
  </Accordion>

  <Accordion title="How should I select Heartbeat value?">
    <Info>
      Recommended 60 sec in WAN environments, 30 sec in LAN; broker and client must use the same value.
    </Info>
  </Accordion>

  <Accordion title="Is TLSv1.3 supported?">
    <Info>
      If your broker and JVM version support it, you can write `TLSv1.3` in connectionFactorySslProtocol field.
    </Info>
  </Accordion>

  <Accordion title="Can I differentiate message TTL by environment?">
    <Info>
      Yes, you can update basicPropertiesExpiration value for the environment after Environment selection.
    </Info>
  </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>
