ALIYUN::AMQP::Exchange is used to create an exchange.

Syntax

{
  "Type": "ALIYUN::AMQP::Exchange",
  "Properties": {
    "InstanceId": String,
    "AlternateExchange": String,
    "Internal": Boolean,
    "VirtualHost": String,
    "AutoDeleteState": Boolean,
    "ExchangeName": String,
    "ExchangeType": String
  }
}

Properties

Property Type Required Editable Description Constraint
InstanceId String Yes No The ID of the instance. None.
AlternateExchange String No No The alternate exchange. An alternate exchange is used to receive messages that fail to be routed to queues from the current exchange.
Internal Boolean Yes No Specifies whether the exchange is an internal exchange. Valid values:
  • true
  • false
VirtualHost String Yes No The name of the vhost in which you want to create the exchange. None.
AutoDeleteState Boolean Yes No Specifies whether to automatically delete the exchange. Valid values:
  • true. When the last queue that is bound to the exchange is unbound, the exchange is automatically deleted.
  • false. When the last queue that is bound to the exchange is unbound, the exchange is not automatically deleted.
ExchangeName String Yes No The name of the exchange. Description:
  • The name of an exchange must be 1 to 255 characters in length, and can contain only letters, digits, hyphens (-), underscores (_), periods (.), number signs (#), forward slashes (/), and at signs (@).
  • After an exchange is created, you cannot modify its name. If you want to modify the name of an exchange, delete it, create a new one, and name the new exchange as what you want.
ExchangeType String Yes No The type of the exchange. Valid values:
  • DIRECT: An exchange of this type routes a message to the queue whose binding key exactly matches the routing key of the message.
  • TOPIC: This type is similar to the direct exchange type. An exchange of this type routes a message to one or more queues based on the results of the fuzzy match or multi-condition match between the routing key of the message and the binding keys of the current exchange.
  • FANOUT: An exchange of this type routes all the received messages to all the queues bound to this exchange. You can use a fanout exchange to broadcast messages.
  • HEADERS: This type is similar to the direct exchange type. The only difference is that a headers exchange routes messages based on the headers attributes instead of routing keys. When you bind a headers exchange to a queue, you must configure binding attributes in the key-value pair format for the binding. When you send a message to a headers exchange, you must configure the headers attributes in the key-value pair format for the message. After a headers exchange receives a message, the exchange routes the message to bound queues based on the matching results between the headers attributes of the message and the binding attributes.

Return values

Fn::GetAtt

ExchangeName: the name of the exchange.

Examples

  • JSON format

    {
      "ROSTemplateFormatVersion": "2015-09-01",
      "Parameters": {
        "InstanceId": {
          "Type": "String",
          "Description": "InstanceId"
        },
        "Internal": {
          "Type": "Boolean",
          "Description": "Specifies whether an exchange is an internal exchange. Valid values:\nfalse: The exchange is not an internal exchange.\ntrue: The exchange is an internal exchange.",
          "AllowedValues": [
            "True",
            "true",
            "False",
            "false"
          ]
        },
        "VirtualHost": {
          "Type": "String",
          "Description": "The name of the virtual host."
        },
        "AutoDeleteState": {
          "Type": "Boolean",
          "Description": "Specifies whether the Auto Delete attribute is configured. Valid values:\ntrue: The Auto Delete attribute is configured. If the last queue that is bound to an exchange is unbound, the exchange is automatically deleted.\nfalse: The Auto Delete attribute is not configured. If the last queue that is bound to an exchange is unbound, the exchange is not automatically deleted.",
          "AllowedValues": [
            "True",
            "true",
            "False",
            "false"
          ]
        },
        "ExchangeName": {
          "Type": "String",
          "Description": "The name of the exchange.",
          "MaxLength": 255
        },
        "ExchangeType": {
          "Type": "String",
          "Description": "The type of the exchange. Valid values:\nFANOUT: An exchange of this type routes all the received messages to all the queues bound to this exchange. You can use a fanout exchange to broadcast messages.\nDIRECT: An exchange of this type routes a message to the queue whose binding key is exactly the same as the routing key of the message.\nTOPIC: This type is similar to the direct exchange type. An exchange of this type routes a message to one or more queues based on the fuzzy match or multi-condition match result between the routing key of the message and the binding keys of the current exchange.\nHEADERS: Headers Exchange uses the Headers property instead of Routing Key for routing matching. When binding Headers Exchange and Queue, set the key-value pair of the binding property; when sending a message to the Headers Exchange, set the message's Headers property key-value pair and use the message Headers The message is routed to the bound Queue by comparing the attribute key-value pair and the bound attribute key-value pair.",
          "AllowedValues": [
            "FANOUT",
            "DIRECT",
            "TOPIC",
            "HEADERS"
          ]
        }
      },
      "Resources": {
        "Exchange": {
          "Type": "ALIYUN::AMQP::Exchange",
          "Properties": {
            "InstanceId": {
              "Ref": "InstanceId"
            },
            "Internal": {
              "Ref": "Internal"
            },
            "VirtualHost": {
              "Ref": "VirtualHost"
            },
            "AutoDeleteState": {
              "Ref": "AutoDeleteState"
            },
            "ExchangeName": {
              "Ref": "ExchangeName"
            },
            "ExchangeType": {
              "Ref": "ExchangeType"
            }
          }
        }
      },
      "Outputs": {
        "ExchangeName": {
          "Description": "The name of the exchange.",
          "Value": {
            "Fn::GetAtt": [
              "Exchange",
              "ExchangeName"
            ]
          }
        }
      }
    }
  • YAML format

    ROSTemplateFormatVersion: '2015-09-01'
    Parameters:
      AutoDeleteState:
        AllowedValues:
        - 'True'
        - 'true'
        - 'False'
        - 'false'
        Description: 'Specifies whether the Auto Delete attribute is configured. Valid
          values:
    
          true: The Auto Delete attribute is configured. If the last queue that is bound
          to an exchange is unbound, the exchange is automatically deleted.
    
          false: The Auto Delete attribute is not configured. If the last queue that is
          bound to an exchange is unbound, the exchange is not automatically deleted.'
        Type: Boolean
      ExchangeName:
        Description: The name of the exchange.
        MaxLength: 255
        Type: String
      ExchangeType:
        AllowedValues:
        - FANOUT
        - DIRECT
        - TOPIC
        - HEADERS
        Description: 'The type of the exchange. Valid values:
    
          FANOUT: An exchange of this type routes all the received messages to all the
          queues bound to this exchange. You can use a fanout exchange to broadcast messages.
    
          DIRECT: An exchange of this type routes a message to the queue whose binding
          key is exactly the same as the routing key of the message.
    
          TOPIC: This type is similar to the direct exchange type. An exchange of this
          type routes a message to one or more queues based on the fuzzy match or multi-condition
          match result between the routing key of the message and the binding keys of
          the current exchange.
    
          HEADERS: Headers Exchange uses the Headers property instead of Routing Key for
          routing matching. When binding Headers Exchange and Queue, set the key-value
          pair of the binding property; when sending a message to the Headers Exchange,
          set the message's Headers property key-value pair and use the message Headers
          The message is routed to the bound Queue by comparing the attribute key-value
          pair and the bound attribute key-value pair.'
        Type: String
      InstanceId:
        Description: InstanceId
        Type: String
      Internal:
        AllowedValues:
        - 'True'
        - 'true'
        - 'False'
        - 'false'
        Description: 'Specifies whether an exchange is an internal exchange. Valid values:
    
          false: The exchange is not an internal exchange.
    
          true: The exchange is an internal exchange.'
        Type: Boolean
      VirtualHost:
        Description: The name of the virtual host.
        Type: String
    Resources:
      Exchange:
        Properties:
          AutoDeleteState:
            Ref: AutoDeleteState
          ExchangeName:
            Ref: ExchangeName
          ExchangeType:
            Ref: ExchangeType
          InstanceId:
            Ref: InstanceId
          Internal:
            Ref: Internal
          VirtualHost:
            Ref: VirtualHost
        Type: ALIYUN::AMQP::Exchange
    Outputs:
      ExchangeName:
        Description: The name of the exchange.
        Value:
          Fn::GetAtt:
          - Exchange
          - ExchangeName