# AMQP客户端接入说明
在调用[创建规则触发条件](https://support.huaweicloud.com/api-iothub/iot_06_v5_01307.html)、[创建规则动作](https://support.huaweicloud.com/api-iothub/iot_06_v5_01302.html)、[修改规则触发条件](https://support.huaweicloud.com/api-iothub/iot_06_v5_01309.html)配置并激活规则后，您需要参考本文将AMQP客户端接入物联网平台，成功接入后，在您的服务端运行AMQP客户端，即可接收订阅的消息。
#### 协议版本说明
华为云物联网平台服务端订阅仅支持AMQP 1.0版的协议标准。
#### 建链认证过程
1. AMQP客户端与物联网平台建立TCP连接，然后进行TLS握手校验。
   ![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
   为了保障安全，接收方必须使用TLS加密，且使用TLS1.2版本，不支持非加密的TCP传输。客户端的时间不能与标准时间差5分钟及以上，否则接入不进来。
   
2. 客户端请求建立连接。
3. 客户端向物联网平台发起请求，建立Receiver Link（即平台向客户端推送数据的单向通道）。客户端建立Connection成功后，需在15秒内完成Receiver Link的建立，否则物联网平台会关闭连接。建立Receiver Link后，客户端成功接入物联网平台。
   ![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
   一个Connection上最多能够创建十个Receiver Link，不支持创建Sender Link，即只能由平台向客户端推送消息，客户端不能向平台发送消息。
   
 
 #### 连接配置说明
AMQP客户端接入物联网平台的连接地址和连接认证参数说明如下：
- AMQP接入地址：amqps://${server.address}:5671。
  
- 连接字符串：amqps://${server.address}:5671?amqp.vhost=default\&amqp.idleTimeout=8000\&amqp.saslMechanisms=PLAIN
  
  | 参数                 | 说明                                                                                                                                                                                                                                |
  |:---|:---|
  | server.address        | AMQP服务端接入地址，请前往[管理控制台](https://console.huaweicloud.com/iotdm/#/dm-portal/home)-实例-总览页面-实例基本信息-接入信息-AMQPS接入地址处获取。 图1总览-获取接入信息 ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000002510383014.png "点击放大") |
  | amqp.vhost          | 当前amqp使用是默认的host，只支持default。                                                                                                                                                                                                       |
  | amqp.saslMechanisms | 连接认证方式当前支持PLAIN-SASL。                                                                                                                                                                                                              |
  | amqp.idleTimeout     | 心跳时间单位为毫秒。如果超过心跳时间，Connection上没有任何帧通信，物联网平台将关闭连接。                                                                                                                                                                                   |
     
  
- 端口：5671
- 客户端身份认证参数
  username ="accessKey=${accessKey}\|timestamp=${timestamp}\|instanceId=${instanceId}"
  password ="${accessCode}"
  
  | 参数         | 是否必须 | 说明                                                                                                                                                                                                                                                                    |
  |:---|:---|:---|
  | accessKey   | 是    | **参数说明：** 接入凭证键值，当前单个键值最多能和32个客户端同时进行建链。 首次建链时候，请参考[获取AMQP接入凭证]进行预置。                                                                                                                                                    |
  | timestamp   | 是   | **参数说明：**客户端传递当前时间的13位毫秒级时间戳。 如果传递该参数，服务端会校验该时间戳与服务器时间的差值，若超过5分钟则视为无效请求。                                                                                                                                                    |
  | instanceId   | 否   | **参数说明：** 实例Id，同一Region购买多个标准版实例时需要填写该参数，实例Id参考这里[查看实例](https://support.huaweicloud.com/usermanual-iothub/iot_01_0079.html#ZH-CN_TOPIC_0262066193__section15214114810410)获取。                                                                                         |
  | accessCode | 是    | **参数说明：** 接入凭证密钥，长度不超过256个。 首次建链时候，请参考[获取AMQP接入凭证]进行预置。若密钥丢失，可通过调用[生成接入凭证](https://support.huaweicloud.com/api-iothub/iot_06_v5_0111.html)接口进行重置，也可以参考[获取AMQP接入凭证]进行重置。 |
     
  
 
 #### 获取AMQP接入凭证
若应用使用AMQP协议接入物联网平台进行数据流转，请先预置接入凭证。您可以通过调用[生成接入凭证](https://support.huaweicloud.com/api-iothub/iot_06_v5_0111.html)接口预置，也可以前往控制台页面进行预置，详细方法请参考如下操作：
1. 选择"IoTDA实例 "，进入您所选择的实例版本，单击"详情"进入实例详情页面。
2. 单击"预置接入凭证"预置接入凭证密钥（accessCode）和接入凭证键值（accessKey）。 
   图2实例管理-预置接入凭证   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000002253095216.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
   如果您之前预置过接入凭证，重新预置之后，之前的接入凭证密钥将不能再使用。
   
   
 
 #### 连接规格
| Key             | Documentation |
|:---|:---|
| 一个连接能够订阅queue数量 | 10          |
| 单个用户最大队列数       | 100         |
| 单个租户最大连接数        | 32          |
| 单个消息缓存时间        | 1天          |
   
#### 接收平台推送的消息
客户端和平台之间的Receiver Link建链成功后，基于这个link，支持客户端主动拉取数据（推荐使用，客户端可根据自身能力来拉取数据）和注册监听由服务端推送两种方式。
