Skip to content

AMQP 0-9-1 Channel Binding v0.3.0

The AMQP channel binding defines how AsyncAPI channels map to AMQP 0-9-1 exchanges and queues. This binding allows you to specify exchange types, queue configurations, routing keys, and virtual hosts for your message broker setup.

Overview

AMQP channel bindings support two main channel types:

  • Routing Key Channels (is: routingKey): Define exchange configurations for message routing
  • Queue Channels (is: queue): Define queue configurations for message storage

Channel Types

Routing Key Channels

Routing key channels define exchange configurations for message routing. They are used when you want to publish messages to exchanges that route to multiple queues based on routing keys.

Exchange Properties

PropertyTypeRequiredDescription
typestringYesExchange type: topic, direct, fanout, default, or headers
namestringYesExchange name (max 255 characters)
durablebooleanNoWhether exchange survives broker restarts
autoDeletebooleanNoWhether exchange is deleted when last queue unbound
vhoststringNoVirtual host (defaults to /)

Exchange Types

  • Topic Exchange: Routes messages using wildcard patterns (e.g., user.*.created)
  • Direct Exchange: Routes messages using exact routing key matches
  • Fanout Exchange: Broadcasts messages to all bound queues
  • Headers Exchange: Routes messages based on message headers
  • Default Exchange: Direct routing using queue names as routing keys

Queue Channels

Queue channels define queue configurations for message storage. They are used when you want to consume messages directly from specific queues.

Queue Properties

PropertyTypeRequiredDescription
namestringYesQueue name (max 255 characters)
durablebooleanNoWhether queue survives broker restarts
exclusivebooleanNoWhether queue is used by only one connection
autoDeletebooleanNoWhether queue is deleted when last consumer unsubscribes
vhoststringNoVirtual host (defaults to /)

Examples

Topic Exchange with Routing Key

yaml
channels:
  userEvents:
    bindings:
      amqp:
        is: routingKey
        exchange:
          name: user-events
          type: topic
          durable: true
          autoDelete: false
          vhost: /
        bindingVersion: '0.3.0'

Direct Exchange for Point-to-Point Communication

yaml
channels:
  orderProcessing:
    bindings:
      amqp:
        is: routingKey
        exchange:
          name: order-exchange
          type: direct
          durable: true
          autoDelete: false
          vhost: /
        bindingVersion: '0.3.0'

Fanout Exchange for Broadcasting

yaml
channels:
  notifications:
    bindings:
      amqp:
        is: routingKey
        exchange:
          name: notification-broadcast
          type: fanout
          durable: true
          autoDelete: false
          vhost: /
        bindingVersion: '0.3.0'

Durable Queue for Reliable Message Storage

yaml
channels:
  orderQueue:
    bindings:
      amqp:
        is: queue
        queue:
          name: order-processing-queue
          durable: true
          exclusive: false
          autoDelete: false
          vhost: /
        bindingVersion: '0.3.0'

Exclusive Queue for Single Consumer

yaml
channels:
  auditQueue:
    bindings:
      amqp:
        is: queue
        queue:
          name: audit-queue
          durable: true
          exclusive: true
          autoDelete: true
          vhost: /
        bindingVersion: '0.3.0'

Multi-Tenant Configuration with Virtual Hosts

yaml
channels:
  tenantEvents:
    bindings:
      amqp:
        is: routingKey
        exchange:
          name: tenant-events
          type: topic
          durable: true
          autoDelete: false
          vhost: tenant-{tenantId}
        bindingVersion: '0.3.0'

Use Cases

Event-Driven Architecture

yaml
channels:
  domainEvents:
    bindings:
      amqp:
        is: routingKey
        exchange:
          name: domain-events
          type: topic
          durable: true
          autoDelete: false
          vhost: /
        bindingVersion: '0.3.0'

Microservices Communication

yaml
channels:
  serviceCommunication:
    bindings:
      amqp:
        is: routingKey
        exchange:
          name: service-bus
          type: direct
          durable: true
          autoDelete: false
          vhost: /
        bindingVersion: '0.3.0'

Real-Time Notifications

yaml
channels:
  realTimeNotifications:
    bindings:
      amqp:
        is: routingKey
        exchange:
          name: real-time-notifications
          type: fanout
          durable: true
          autoDelete: false
          vhost: /
        bindingVersion: '0.3.0'

Work Queue Pattern

yaml
channels:
  workQueue:
    bindings:
      amqp:
        is: queue
        queue:
          name: work-queue
          durable: true
          exclusive: false
          autoDelete: false
          vhost: /
        bindingVersion: '0.3.0'

Versioning

This binding is for version 0.3.0 of the AMQP binding specification.