更新时间:2023-11-23 GMT+08:00

系统订阅

操作场景

IEF提供系统订阅,您可以订阅IEF资源的变更事件,当资源创建、更新、删除时,IEF会发送消息到您指定的APIG端点,以便您及时感知资源的变化。

系统订阅是边云消息的一种特定实现,IEF发送特定资源的事件消息到指定Topic,并调用APIG的API,用户可通过API调用感知资源的变化。

支持订阅的事件

当前支持订阅如下事件。

表1 支持订阅的事件

系统事件

Topic

资源类型

操作

实例创建

$hw/events/instance/+/created

应用实例(instance)

created

实例更新

$hw/events/instance/+/updated

应用实例(instance)

updated

实例删除

$hw/events/instance/+/deleted

应用实例(instance)

deleted

应用删除

$hw/events/deployment/+/deleted

容器应用(deployment)

deleted

应用创建

$hw/events/deployment/+/created

容器应用(deployment)

created

应用更新

$hw/events/deployment/+/updated

容器应用(deployment)

updated

节点创建

$hw/events/edgeNode/+/created

边缘节点(edgeNode)

created

节点更新

$hw/events/edgeNode/+/updated

边缘节点(edgeNode)

updated

节点删除

$hw/events/edgeNode/+/deleted

边缘节点(edgeNode)

deleted

节点上线

$hw/events/edgeNode/+/online

边缘节点(edgeNode)

online

节点离线

$hw/events/edgeNode/+/offline

边缘节点(edgeNode)

offline

设备创建

$hw/events/device/+/created

终端设备(device)

created

设备更新

$hw/events/device/+/updated

终端设备(device)

updated

设备删除

$hw/events/device/+/deleted

终端设备(device)

deleted

系统订阅流程

系统订阅流程如下:

  1. 在APIG创建供IEF调用的API。
  2. 在IEF中创建APIG端点。
  3. 在IEF中创建系统订阅。

创建API

在APIG中创建API,具体请参见APIG 快速入门

该API用于给IEF调用,发送系统事件消息。

创建APIG端点

  1. 登录IEF管理控制台,在“总览”页面切换实例为铂金版。
  2. 选择左侧导航栏“边云消息 > 消息端点”
  3. 单击页面右上角“创建消息端点”,填写相关参数。

    图1 创建消息端点
    • 消息端点类型:选择APIG。
    • 消息端点名称:输入消息端点名称。

  4. 单击“确定”,即创建消息端点成功,返回到消息端点列表页面。

创建系统订阅

  1. 登录IEF管理控制台,在“总览”页面切换实例为铂金版。
  2. 选择左侧导航栏“边云消息 > 系统订阅”
  3. 单击页面右上角“创建系统订阅”,填写相关参数。

    图2 创建系统订阅
    • 系统订阅名称:输入系统订阅名称。

      系统订阅和消息路由是同一种资源,命名不能冲突。

    • 订阅主题:订阅事件的主题和操作,如创建容器应用,当前支持订阅的事件如表1
    • 目的端点创建APIG端点中创建的端点。
    • 目的端点资源创建API中创建的API资源。

  4. 单击“创建”,完成系统订阅创建。

订阅后说明

创建系统订阅后,当有系统事件发生,在IEF控制台系统订阅列表中,会记录消息转发的次数。

图3 转发消息数

同时IEF会调用APIG中注册的API,请求消息体如下所示。请求消息体采用标准的CloudEvents格式,CloudEvents详细信息请参见这里

{
	"data": {
		"event_type": "instance",
		"operation": "created",
		"timestamp": 134567677,
		"topic": "$hw/events/deployment/+/created",
		"name": "xxxx",
		"attributes": {"ID":"x"}
	},
        "datacontenttype": "application/json",
	"source": "sysevents",
	"id": "xxxx",
	"time": "2020-11-5 xxx"
}
  • data:系统事件的数据。
    • event_type:资源类型,String类型。
    • operation:资源的操作类型,String类型。
    • topic:消息发送的Topic,String类型。
    • timestamp:事件产生的时间戳,Uint64类型。
    • name:资源名称,String类型。
    • attributes:资源的属性,删除资源时消息中无此参数,Object类型。
  • datacontenttype:系统事件数据内容的格式,String类型。
  • source:系统事件的来源,String类型。
  • id:系统事件ID,String类型。
  • time:系统事件产生时间,String类型。

当前支持的资源类型、操作和Topic如下表所示。

表2 支持订阅的事件

系统事件

Topic

资源类型

操作

实例创建

$hw/events/instance/+/created

应用实例(instance)

created

实例更新

$hw/events/instance/+/updated

应用实例(instance)

updated

实例删除

$hw/events/instance/+/deleted

应用实例(instance)

deleted

应用删除

$hw/events/deployment/+/deleted

容器应用(deployment)

deleted

应用创建

$hw/events/deployment/+/created

容器应用(deployment)

created

应用更新

$hw/events/deployment/+/updated

容器应用(deployment)

updated

节点创建

$hw/events/edgeNode/+/created

边缘节点(edgeNode)

created

节点更新

$hw/events/edgeNode/+/updated

边缘节点(edgeNode)

updated

节点删除

$hw/events/edgeNode/+/deleted

边缘节点(edgeNode)

deleted

节点上线

$hw/events/edgeNode/+/online

边缘节点(edgeNode)

online

节点离线

$hw/events/edgeNode/+/offline

边缘节点(edgeNode)

offline

设备创建

$hw/events/device/+/created

终端设备(device)

created

设备更新

$hw/events/device/+/updated

终端设备(device)

updated

设备删除

$hw/events/device/+/deleted

终端设备(device)

deleted