Skip to main content

Overview

AMQP Message Publishing

Enables Integration Flow steps within Apinizer to reliably publish messages over AMQP

High Availability

Provides high availability among brokers in the cluster by defining multiple host/port

Flexible Message Format

Transmits log messages, telemetry, or business data to the target queue in appropriate format with virtual host and basic properties fields

Secure Messaging

Guarantees secure messaging with optional Authentication and SSL/TLS support

Connection Initiation

When a RabbitMQ Connection is requested from within an Integration Flow or Connector, the system reads the configured connection parameters

Connection Pool Management

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

Authentication

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

Data Communication

Channel is opened over AMQP protocol, message is published with channelExchange and channelRoutingKey parameters; basic properties fields carry message metadata

Connection Management

After the operation is completed, the connection returns to the pool; it is automatically closed when idle time is exceeded

Error Management

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

Log and Audit

Sending log, audit, and monitoring events to RabbitMQ-based central queue

Event Triggering

AMQP topic/queue integrations to trigger commands or events to external systems

Microservice Messaging

Messaging between distributed microservices in high-volume data processing pipelines

Managed RabbitMQ Integration

Secure connection to third-party Message Queue infrastructures (e.g., managed RabbitMQ)

Technical Features and Capabilities

Multiple Host/Port Definition

Automatic failover is provided by adding multiple broker addresses.

Virtual Host Management

Tenant-based isolation is supported with connectionFactoryVirtualHost field.

AMQP Basic Properties Template

Fields such as AppId, ContentType, Priority are predefined to standardize message format.

Environment-Based Configuration

Ability to define separate connection parameters for each environment (Development, Test, Production).

Enable/Disable Control

Activating or deactivating the Connection (enable/disable toggle). In passive state, the connection cannot be used but its configuration is preserved.

Authentication Toggle

Can be disabled for brokers that do not require authentication, username/password becomes mandatory when needed.

SSL/TLS Protocol Selection

TLS version can be freely written, self-signed certificates can be tested in development environment.

Heartbeat and Channel Limits

Broker capacity is adapted with RequestedChannelMax, RequestedFrameMax, and RequestedHeartbeat values.

Connection Test Feature

Ability to validate connection parameters before saving with the “Test Connection” button.

Export/Import Feature

Exporting Connection configuration as a ZIP file. Importing to different environments (Development, Test, Production). Version control and backup capability.

Connection Monitoring

Monitoring connection health, pool status, and performance metrics.

Connection Parameters

Name

Description: Connection name (must be unique)
Example Value: Production_RabbitMQ
Notes: Should not start with space, special characters should not be used

Host/Port List

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

Connection Factory Virtual Host

Description: AMQP virtual host name
Example Value: /apinizer
Notes: Must match the vhost name in RabbitMQ management console

Connection Factory Connection Timeout

Description: Time to wait until AMQP connection is established
Example Value: 60000
Notes: In ms; value 0 means unlimited wait

Requested Channel Max

Description: Maximum number of channels per connection
Example Value: 2047
Notes: Should not exceed broker limit

Requested Frame Max

Description: AMQP frame size limit
Example Value: 0
Notes: Value 0 uses broker default

Requested Heartbeat

Description: Heartbeat interval with broker
Example Value: 60
Notes: In seconds; 0 -> heartbeat disabled

Channel Routing Key

Description: Queue or topic key to route the message
Example Value: apinizer.audit.queue
Notes: Recommended to keep same as queue name

Basic Properties AppId

Description: Application ID that created the message
Example Value: apinizer
Notes: Can be tracked in API logs

Basic Properties ContentType

Description: Message body format
Example Value: application/json
Notes: Values such as application/xml are supported

Basic Properties ContentEncoding

Description: Content character set
Example Value: UTF-8
Notes: Broker and consumer must use the same encoding

Basic Properties DeliveryMode

Description: Delivery mode 1 (transient) or 2 (persistent)
Example Value: 2
Notes: Must select 2 for persistence

Basic Properties Priority

Description: Message priority (0-9)
Example Value: 5
Notes: Queue priority must be enabled

Basic Properties ReplyTo

Description: Queue to return the response
Example Value: apinizer.reply
Notes: Mandatory in Request/Reply patterns

Basic Properties Expiration

Description: TTL value of the message (ms)
Example Value: 60000
Notes: Should not exceed queue policy

Basic Properties Type

Description: Defines message type
Example Value: apinizer-log-type
Notes: Used for filtering in consumer

Basic Properties UserId

Description: RabbitMQ user ID
Example Value: guest
Notes: Broker verifies if Authentication is enabled

Basic Properties ClusterId

Description: Broker cluster ID
Example Value: cluster-eu-central
Notes: Used in cluster observability reports

Description

Description: Description about Connection purpose
Default Value: -
Recommended Value: Specify process or project name

Channel Exchange

Description: Exchange name to publish the message
Default Value: ""
Recommended Value: apinizer.audit.exchange

Authentication Enabled

Description: Authentication requirement toggle
Default Value: false
Recommended Value: true in Production environment

Connection Factory Username

Description: Username if Authentication is enabled
Default Value: guest
Recommended Value: Use a separate service account

Connection Factory Password

Description: Password for the user
Default Value: guest
Recommended Value: Strong password managed through Secret Manager

Connection Factory Use SSL Protocol

Description: SSL/TLS usage status
Default Value: false
Recommended Value: true in Production

Connection Factory SSL Protocol

Description: TLS version to use
Default Value: TLSv1.2
Recommended Value: TLSv1.3 according to broker support

Channel Exchange Binding

Description: Note about relationship between exchange and routing key
Default Value: -
Recommended Value: Keep environment-based table

Timeout and Connection Pool Parameters

Connection Timeout

Description: Maximum wait time for connection establishment
Default: 60000 ms
Min: 1000 ms | Max: 300000 ms

Request Timeout

Description: Response wait time for message sending
Default: 30000 ms
Min: 5000 ms | Max: 120000 ms

Pool Size

Description: Maximum number of connections in Connection pool
Default: 10
Min: 1 | Max: 100

Heartbeat Interval

Description: Heartbeat time with broker
Default: 60 seconds
Min: 0 | Max: 300 seconds

Usage Scenarios

Log Streaming

Situation: Transferring Gateway logs to central queue
Solution: channelRoutingKey=apinizer.logs, deliveryMode=2
Expected Result: All log messages are collected in persistent queue

Audit Trail

Situation: Monitoring authorized operations
Solution: basicPropertiesType=audit, SSL enabled
Expected Result: Secure audit messages reach consumer service

Event Fan-out

Situation: Publishing to multiple consumers
Solution: channelExchange=apinizer.events, topic exchange
Expected Result: All subscribers receive messages according to routing key pattern

Failover Cluster

Situation: Continuity when a broker goes down
Solution: Adding at least 3 nodes to hostPortList
Expected Result: Connection automatically switches to another node

Long Queue TTL

Situation: Time-sensitive tasks
Solution: basicPropertiesExpiration=120000, lowering priority
Expected Result: Messages are automatically deleted after 2 minutes

Low Latency Jobs

Situation: Fast command transmission
Solution: connectionFactoryRequestedHeartbeat=30, pool size=20
Expected Result: Latency decreases, throughput increases

Connection Configuration

Creating New RabbitMQ Connection

Image 2024 9 9 15 35 35 Pn
1

Navigate to Creation Page

Go to Connection → RabbitMQ Connection section from the left menu.Click the [+ Create] button in the top right.
2

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

Environment Selection

Select environment from dropdown menu: Development, Test, or Production.Different connection parameters can be defined for each environment.
4

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

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

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

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

Test Connection

Click the [Test Connection] button.Test whether connection parameters are correct.Success: Green confirmation message, Failed: Error details are shown.
9

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.
    Connection created successfully! You can now use it in Integration Flow and Connector steps.

Deleting Connection

Deletion Process

Select Delete from the menu at the end of the row or click the [Delete] button on the connection detail page

Deletion Tips

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

Exporting/Importing Connection

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.

Method 1

Select ⋮ → Export from the action menu. ZIP file is automatically downloaded.

Method 2

Click the [Export] button on the connection detail page. ZIP file is downloaded.

File Format

Format: Date-connection-ConnectionName-export.zip
Example: 13 Nov 2025-connection-Production_RabbitMQ-export.zip

ZIP Contents

  • Connection JSON file
  • Metadata information
  • Dependency information (e.g., certificates, key store)

Usage Areas

  • Backup
  • Transfer between environments (Test → Prod)
  • Versioning
  • Team or project-based sharing

Import Steps

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

Import Scenarios

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.

Usage Areas of Connection

Creating and Activating Connection

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

Usage in Integration / Connector Steps

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

Scheduled Job Usage

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

Usage for Testing Purposes

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

Best Practices

Cluster Reachability

Bad: Defining a single host
Good: Adding two hosts
Best: Adding all broker nodes to hostPortList and ordering according to health check results

Routing Key Management

Bad: Using random routing keys
Good: Using queue name as routing key
Best: Naming in domain.context.event format to provide maintenance ease

Message TTL Strategy

Bad: Leaving Expiration field empty
Good: Defining default 60 seconds
Best: Creating environment-based TTL sets according to business requirements

Authentication Strategy

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

Environment Management

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

Connection Test

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

RabbitMQ User Permissions

Grant user only necessary vhost and queue permissions; manage configure/write/read permissions separately

AMQP Certificate Management

If SSL/TLS is enabled, add broker certificates to keystore, track expiration dates, plan renewal in advance

Audit and Logging

Send authentication errors and SSL negotiation logs to central log pool, generate alarms through SIEM

Credential Management

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

SSL/TLS Usage

Always enable SSL/TLS in Production environment. Use self-signed certificates only in development environment. Track certificate expiration dates and renew them on time

Access Control

Allow only authorized users to change Connection configuration. Store connection change logs. Apply change approval process for critical connections

Overloading Single Queue

Why to avoid: Single routing key routes all messages to the same queue, bottleneck occurs
Alternative: Define different routing keys according to message type

Setting Heartbeat to 0

Why to avoid: Broker cannot detect connection drops
Alternative: Use at least 30-second heartbeat

Sharing SSL Certificate

Why to avoid: Copying certificate creates security vulnerability
Alternative: Use separate certificate/credential for each environment

Using Production Connection in Test Environment

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_)

Very Low Timeout Values

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

Not Using Connection Pool

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

Message Size Management

Recommendation: Fragment messages above 128 KB or use gzip
Effect: Risk of hitting FrameMax limit decreases, throughput increases

Routing Key Templates

Recommendation: Use service.region.event pattern
Effect: Consumers easily filter with pattern, subscription count decreases

Heartbeat Setting

Recommendation: Use 60 sec heartbeat in WAN connections, 30 sec in LAN
Effect: Drops are quickly detected, unnecessary reconnect is prevented

Connection Pool Optimization

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

Timeout Values Optimization

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

Connection Monitoring

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

Troubleshooting

Wrong routing key, exchange binding missing, or user may not have write permission.
1

Exchange/Queue Binding

Check exchange/queue bindings.
2

Routing Key Test

Test routing key from broker.
3

User Permissions

Update user permissions.
Wrong TLS version, certificate chain missing, or self-signed certificate may be used in Production.
1

TLS Version

Verify TLS version supported by broker.
2

Certificate Loading

Reload certificate to keystore.
3

CA-Signed Certificate

Use CA-signed certificate in Production.
Network delay, target system responding slowly, or timeout value may be too low.
1

Network Check

Check network connectivity.
2

System Health

Check target system health.
3

Timeout Settings

Increase timeout values.
4

Log Review

Review connection logs.
Wrong username/password, expired credentials, or permission problem may exist.
1

Credentials

Verify credentials.
2

User Status

Check that the user is active in the target system.
3

Permission Check

Check that necessary permissions are granted.
4

Certificate Check

Check SSL/TLS certificates.
Pool size may be too low, connection leak exists, or traffic may be too high.
1

Pool Size

Increase pool size.
2

Connection Check

Check that connections are properly closed.
3

Idle Timeout

Set idle connection timeouts.
4

Metric Monitoring

Monitor connection usage metrics.
A different connection may be selected in Integration/Connector step, the step may be misconfigured, or Flow/Job may not be redeployed.
1

Enable Toggle

Check that the Connection’s enable toggle is active.
2

Connection Selection

Verify that the correct connection is selected in Integration Flow.
3

Connection Deploy

Redeploy the Connection.
4

Flow/Job Deploy

Redeploy Integration Flow or Job.
5

Log Check

Check Gateway logs.

Frequently Asked Questions (FAQ)

Yes, but routing key and basic properties fields need to be customized in different Integration Flow steps.
No, IP can also be used but using DNS reduces maintenance cost in node changes.
Recommended 60 sec in WAN environments, 30 sec in LAN; broker and client must use the same value.
If your broker and JVM version support it, you can write TLSv1.3 in connectionFactorySslProtocol field.
Yes, you can update basicPropertiesExpiration value for the environment after Environment selection.
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.
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.
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.
Several reasons may exist:
  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