RabbitMQ AMQP Messaging API

AMQP 0-9-1 messaging protocol for producing and consuming messages via exchanges, queues, and bindings with support for multiple exchange types, message acknowledgment, and consumer groups.

AsyncAPI Specification

rabbitmq-messaging.yml Raw ↑
asyncapi: 2.6.0
info:
  title: RabbitMQ AMQP Messaging API
  version: 3.13.0
  description: >-
    RabbitMQ messaging via AMQP 0-9-1 protocol. Producers publish messages to
    exchanges which route them to queues based on bindings and routing keys.
    Consumers subscribe to queues to receive messages.
  contact:
    name: RabbitMQ
    url: https://www.rabbitmq.com/
  license:
    name: MPL 2.0
    url: https://www.mozilla.org/en-US/MPL/2.0/
servers:
  default:
    url: localhost:5672
    protocol: amqp
    protocolVersion: 0.9.1
    description: Default RabbitMQ AMQP endpoint
defaultContentType: application/json
channels:
  '{exchange}/{routing_key}':
    description: >-
      Messages are published to an exchange with a routing key. The exchange
      routes messages to bound queues based on exchange type and binding rules.
    parameters:
      exchange:
        description: The exchange name
        schema:
          type: string
      routing_key:
        description: The routing key for message routing
        schema:
          type: string
    publish:
      operationId: publishMessage
      summary: Publish a message to an exchange
      description: >-
        Publish a message to the specified exchange with a routing key.
        The exchange will route the message to matching queues based on
        the exchange type (direct, fanout, topic, headers).
      message:
        $ref: '#/components/messages/AMQPMessage'
      bindings:
        amqp:
          expiration: 60000
          cc:
            - additional.routing.key
          priority: 10
          deliveryMode: 2
          mandatory: false
          timestamp: true
  '{queue}':
    description: >-
      Consumers subscribe to queues to receive messages. Queues can be durable,
      exclusive, or auto-delete. Messages are distributed to consumers in
      round-robin fashion.
    parameters:
      queue:
        description: The queue name
        schema:
          type: string
    subscribe:
      operationId: consumeMessage
      summary: Consume messages from a queue
      description: >-
        Subscribe to a queue to receive messages. Supports manual and
        automatic acknowledgment modes.
      message:
        $ref: '#/components/messages/AMQPMessage'
      bindings:
        amqp:
          ack: true
components:
  messages:
    AMQPMessage:
      name: AMQPMessage
      title: AMQP Message
      summary: A message in RabbitMQ following the AMQP 0-9-1 protocol
      contentType: application/json
      headers:
        type: object
        properties:
          content_type:
            type: string
          content_encoding:
            type: string
          delivery_mode:
            type: integer
            enum: [1, 2]
            description: 1 for non-persistent, 2 for persistent
          priority:
            type: integer
            minimum: 0
            maximum: 9
          correlation_id:
            type: string
          reply_to:
            type: string
          expiration:
            type: string
          message_id:
            type: string
          timestamp:
            type: integer
          type:
            type: string
          user_id:
            type: string
          app_id:
            type: string
        additionalProperties:
          description: Custom headers
      payload:
        type: object
        description: The message body
      bindings:
        amqp:
          contentEncoding: utf-8
          messageType: application/json