AMQP协议六

8 篇文章 0 订阅

1.3 组合类型

    AMQP定义了组合类型,组合类型被用来封装格式化数据比如帧主体。组合类型定义了一个描述值,这个描述值是由已知的固定字段组成的。每个组合类型的定义包括了一个固定字段的有序序列,每个序列中包含名称、类型和多样性。组合类型的定义包含了一个或者多个描述符(语法的和数字的)来确定对他们的描述。

    规格文档中,组合类型通常被定义在XML文档中。如下边的注释就是用来描述组合类型的:

    <type class="composite" name="book" label="example composite type">
       <doc>
         <p>An example composite type.</p>
       </doc>
       <descriptor name="example:book:list" code="0x00000003:0x00000002"/>
       <field name="title" type="string" mandatory="true" label="title of the book"/>
       <field name="authors" type="string" multiple="true"/>
       <field name="isbn" type="string" label="the ISBN code for the book"/>
    </type>
                    Figure 1.4: 组合类型实例


    如果在描述的字段中出现了空值的情况下,那么属性中的强制属性才会生效。

    如果在描述中出现了多个值的情况下,那么属性中的多样性属性才会生效。描述的类型中单个字段总是被允许的。多个字段的值总是使用在数组类型中的,数组类型中的元素通常是被定义成固定字段的。需要注意的是,一个空的值和一个长度为0的数组值在语法上是有效的。

    被描述成多样性或者强制性的字段至少保证要有一个值,也就是说在这种情况下,出现了空值和数组长度为0的都是不合法的。

1.3.1 列表封装

    AMQP的组合类型的值是被封装成列表格式的。列表中每个元素都是与列在组合类型中的字段相关联的。被允许封装的元素是由类型和对应字段相关联的多样性来决定的。当列表中末尾的元素为空的时候,这时是可以忽略的。列表的描述符可以指出组合类型是被怎么描述的。

    下边是根据上边书这个组合类型描述的例子。例子中,最后一个ISBN是空值,根据规则它对应的值是可以被忽略的。

                             constructor                               list representation of a book
                                     |                                                              |
   +--------------------------+-------------------------+  +---------------------+-----------------+
   |                                                                |    |                                                 |
   0x00  0xA3  0x11  "example:book:list" 0xC0   0x40   0x03   title   authors   isbn
               |                               |                                                 |           |          |
               |          identifies composite type                                |           |          |
               |                                                                                 |           |       0x40
           sym8                                              +------------------------+           |          |
        (symbol)                                             |                                          |    null value
                                    +-----------------------+-----------------------+            |
                                    |                                                           |            |
                                    0xA1 0x15 "AMQP for & by Dummies"              |
                                                                                                              |
+------------------------------------------------------------+-----+
| |
    0xE0  0x25  0x02  0xA1  0x0E "Rob J. Godfrey"  0x13 "Rafael H. Schloming"
                 |        |        |      |                                |    |                                         |
              size      |        |      +-------------+-----------+   +---------------+----------------+
                          |        |                        |                                        |
                     count     |               first element                     second element
                                   |
                       element constructor

  
                                          Figure 1.5: 组合类型值实例

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值