ALIYUN::AMQP::Exchange类型用于创建Exchange。

语法

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

属性

属性名称 类型 必须 允许更新 描述 约束
InstanceId String 实例ID。
AlternateExchange String 备份Exchange。 配置备份Exchange用于接收Exchange路由失败的消息。
Internal Boolean 是否为内部Exchange。 取值:
  • true:是内部Exchange。
  • false:不是内部Exchange。
VirtualHost String Exchange所在的Vhost名称。
AutoDeleteState Boolean 是否自动删除。 取值:
  • true:自动删除。当绑定到该Exchange的最后一个Queue解除绑定时,该Exchange会自动删除。
  • false:不自动删除。当绑定到该Exchange的最后一个Queue解除绑定时,该Exchange不会自动删除。
ExchangeName String Exchange名称。 Exchange名称说明:
  • Exchange名称只能包含字母、数字、短划线(-)、下划线(_)、半角句号(.)、井号(#)、正斜线(/)、at 符号(@),长度限制为1~255 字符。
  • 当Exchange被创建后,Exchange名称不支持修改。如果您想修改Exchange名称,只能删除Exchange后重建。
ExchangeType String Exchange类型。 取值:
  • DIRECT:该类型路由规则会将消息路由到Binding Key与Routing Key完全匹配的Queue中。
  • TOPIC:该类型与DIRECT类型相似,使用Routing Key模式匹配和字符串比较的方式将消息路由至绑定的Queue中。
  • FANOUT:该类型路由规则非常简单,会把所有发送到该Exchange的消息路由到所有与它绑定的Queue中,相当于广播功能。
  • HEADERS:该类型与DIRECT类型相似。Headers Exchange使用Headers属性代替Routing Key进行路由匹配。在绑定Headers Exchange和Queue时,设置绑定属性的键值对。在向Headers Exchange发送消息时,设置消息的Headers属性键值对,使用消息Headers属性键值对和绑定属性键值对比较的方式将消息路由至绑定的Queue中。

返回值

Fn::GetAtt

ExchangeName:Exchange名称。

示例

  • JSON格式

    {
      "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格式

    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