更新时间:2024-08-21 GMT+08:00

AMQP客户端接入说明

在调用创建规则触发条件创建规则动作修改规则触发条件配置并激活规则后,您需要参考本文将AMQP客户端接入物联网平台,成功接入后,在您的服务端运行AMQP客户端,即可接收订阅的消息。

协议版本说明

AMQP协议标准的详细介绍,请参见AMQP协议标准

华为云物联网平台服务端订阅仅支持AMQP 1.0版的协议标准。

建链认证过程

  1. AMQP客户端与物联网平台建立TCP连接,然后进行TLS握手校验。

    为了保障安全,接收方必须使用TLS加密,且使用TLS1.2版本,不支持非加密的TCP传输。客户端的时间不能与标准时间差5分钟及以上,否则接入不进来。

  2. 客户端请求建立连接。
  3. 客户端向物联网平台发起请求,建立Receiver Link(即平台向客户端推送数据的单向通道)。客户端建立Connection成功后,需在15秒内完成Receiver Link的建立,否则物联网平台会关闭连接。建立Receiver Link后,客户端成功接入物联网平台。

    一个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服务端接入地址,请前往管理控制台-实例-总览页面-实例基本信息-接入信息-AMQPS接入地址处获取。

    图1 总览-获取接入信息

    amqp.vhost

    当前amqp使用是默认的host,只支持default。

    amqp.saslMechanisms

    连接认证方式当前支持PLAIN-SASL。

    amqp.idleTimeout

    心跳时间单位为毫秒。如果超过心跳时间,Connection上没有任何帧通信,物联网平台将关闭连接。

  • 端口:5671
  • 客户端身份认证参数

    username =“accessKey=${accessKey}|timestamp=${timestamp}|instanceId=${instanceId}”

    password =“${accessCode}”

    参数

    是否必须

    说明

    accessKey

    接入凭证键值,当前单个键值最多能和32个客户端同时进行建链。 首次建链时候,请参考这里进行预置。

    timestamp

    表示当前时间,13位毫秒值时间戳。

    服务端校验客户端的时间戳,且时间戳相差5分钟。

    instanceId

    实例Id,同一Region购买多个标准版实例时需要填设置该参数,实例Id参考这里这里获取。

    accessCode

    接入凭证密钥,长度不超过256个。 首次建链时候,请参考这里进行预置。若密钥丢失,可通过调用接入凭证接口进行重置,也可以参考这里进行重置。

获取AMQP接入凭证

若应用使用AMQP协议接入物联网平台进行数据流转,请先预置接入凭证。您可以通过调用生成接入凭证接口预置,也可以前往控制台页面进行预置,详细方法请参考如下操作:

  1. 选择IoTDA实例 ,进入您所选择的实例版本,单击“详情”进入实例详情页面。
  2. 单击“预置接入凭证”预置接入凭证密钥(accessCode)和接入凭证键值(accessKey)。

    图2 实例管理-预置接入凭证

    如果您之前预置过接入凭证,重新预置之后,之前的接入凭证密钥将不能再使用。

连接规格

Key

Documentation

一个连接能够订阅queue数量

10

单个用户最大队列数

100

单个租户最大连接数

32

单个消息缓存时间

1天

接收平台推送的消息

客户端和平台之间的Receiver Link建链成功后,基于这个link,支持客户端主动拉取数据(推荐使用,客户端可根据自身能力来拉取数据)和注册监听由服务端推送两种方式。