本教程以云视频会议开始或结束事件为例,说明事件总线EventBridge如何根据事件规则将云视频会议事件路由到指定的HTTP网关,从而实现事件驱动架构。

前提条件

在开始本教程前,请确保您已完成以下操作:
  1. 注册阿里云账号并完成实名认证。详情请参见阿里云账号注册流程
  2. 开通云视频会议。详情请参见开通云视频会议

背景信息

  • 事件驱动架构:以事件驱动架构设计和管理您的服务可以很好的实现服务模块之间解耦,提高服务整体的稳定性和灵活性。所有的业务数据都可以映射到事件上来,所有的业务事件按照业务领域划分为多个事件类型。详情请参见事件驱动架构(Event Driven Architecture,EDA)
  • 云视频会议:云视频会议是阿里云提供的开放、可靠、智能的会议PaaS服务,基于阿里集团数年视频会议技术及应用积累、全球部署的网络节点覆盖及领先的AI技术,您可快速构建多端互通与简单易用的会议协作应用。详情请参见什么是云视频会议

    云视频会议定义的事件类型如下表所示。

    事件类型 事件类型描述 事件触发场景
    aliyuncvc:MeetingEvent:MeetingStateEvent 会议开始或结束事件。
    • 会议开始,即从第一个人进入会议,推送“时间、会议ID、MeetingName、事件”。
    • 会议结束,即从最后一个人离开会议(不论是主动还是被动),推送“时间、会议ID、MeetingUUID、MeetingName”。
    aliyuncvc:MeetingEvent:MemberStateEvent 会议成员状态事件
    • 成员入会,推送“时间、会议ID、MeetingUUID、MeetingName、userID”。
    • 成员离会,推送“时间、会议ID、MeetingUUID、MeetingName、userID”。
    aliyuncvc:MeetingEvent:MemberOperate 会议成员会中操作事件
    • 静音或取消静音,推送“时间、会议ID、MeetingUUID、MeetingName、userID”。
    • 打开或关闭扬声器,推送“时间、会议ID、MeetingUUID、MeetingName、userID”。
    • 打开或关闭摄像头,推送“时间、会议ID、MeetingUUID、MeetingName、userID”。
    • 打开或关闭共享屏幕,推送“时间、会议ID、MeetingUUID、MeetingName、userID”。
    aliyuncvc:MeetingEvent:MeetingStatistic 会议统计数据发布事件 每天推送一次最高并发。

云视频会议事件通知事件流

本文以云视频会议为例,为您介绍阿里云服务接入事件总线EventBridge的流程。

cvcflow

步骤一:开通事件总线EventBridge

首先,您需要开通事件总线EventBridge

  1. 进入事件总线EventBridge开通页面。
  2. 事件总线EventBridge(按量付费)页面,选中事件总线EventBridge(按量付费)服务协议,然后单击立即购买
    activate_service

步骤二:创建事件规则

云视频会议事件会发布到默认事件总线。事件总线EventBridge为您内置了默认事件总线,您无需创建默认事件总线。为默认事件总线创建事件规则的步骤如下:

  1. 登录事件总线EventBridge控制台
  2. 在顶部菜单栏,选择华东1(杭州)地域。
  3. 在左侧导航栏,单击规则
  4. 规则页面的规则区域,单击创建规则
  5. 创建事件规则页面,完成以下操作。
    1. 名称和描述区域的名称文本框,输入MyRule,在描述文本框,输入将云视频会议开始或结束事件路由到指定HTTP网关。
      cvc_1
    2. 定义事件模式区域,选择服务提供的预定义模式,从阿里云服务列表,选择Aliyun Meeting Service,然后从事件类型列表,选择aliyuncvc:MeetingEvent:MeetingStateEvent
      cvc_2

      上图中的事件模式代码如下:

      {
          "source": [
              "acs.aliyuncvc"
          ],
          "type": [
              "aliyuncvc:MeetingEvent:MeetingStateEvent"
          ]
      }
    3. 选择事件总线区域,选择默认事件总线
      cvc_3
    4. 选择目标处理区域的目标列表,选择HTTP,在URL文本框,输入http://api.xtingke.com/eventBridge/processEvent,然后从推送格式列表,选择完整事件
      cvc_4
    5. 单击确定

步骤三:使用HTTP网关接收事件

使用HTTP网关接收事件的示例代码如下。
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@SpringBootApplication
@Slf4j
public class EventProcessingApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @PostMapping("/eventBridge/processEvent")
    @ResponseBody
    public String revieveMessage(@RequestBody String data) {
        log.info("revieveEvent");
        log.info(data);
        return "recieved";
    }
}
接收到的事件如下图所示。cvc_5