本教程以雲視頻會議的會議狀態事件為例,說明事件匯流排EventBridge如何根據事件規則將雲視頻會議事件路由到指定的HTTP網關,從而實現事件驅動架構。
前提條件
您已完成以下操作:- 開通事件匯流排EventBridge並授權
- 開通雲視頻會議
背景資訊
- 事件驅動架構:以事件驅動架構設計和管理您的服務可以很好的實現服務模組之間解耦,提高服務整體的穩定性和靈活性。所有的業務資料都可以映射到事件上來,所有的業務事件按照業務領域劃分為多個事件類型。更多資訊,請參見事件驅動架構。
- 雲視頻會議:雲視頻會議是阿里雲提供的開放、可靠、智能的會議PaaS服務,基於阿里集團數年視頻會議技術及應用積累、全球部署的網路節點覆蓋及AI技術,您可快速構建多端互連與簡單易用的會議協作應用。
雲視頻會議定義的事件類型如下表所示。
事件類型 事件類型描述 事件觸發情境 會議狀態 會議開始或結束事件 - 會議開始,即從第一個人進入會議,推送“時間、MeetingUUID、MeetingName、action”。
- 會議結束,即從最後一個人離開通話(不論是主動還是被動),推送“時間、MeetingUUID、MeetingName、action”。
成員狀態 會議成員狀態事件 - 成員入會,推送“時間、MeetingUUID、MeetingName、userID、groupId、action”。
- 成員離會,推送“時間、MeetingUUID、MeetingName、userID、groupId、action”。
成員操作 會議成員會中操作事件 - 靜音或取消靜音,推送“時間、MeetingUUID、MeetingName、userID、groupId、action”。
- 開啟或關閉擴音器,推送“時間、MeetingUUID、MeetingName、userID、groupId、action”。
- 開啟或關閉網路攝影機,推送“時間、MeetingUUID、MeetingName、userID、groupId、action”。
- 開啟或關閉共用螢幕,推送“時間、MeetingUUID、MeetingName、userID、groupId、action”。
會議統計 會議統計資料發布事件 每天推送一次最高並發。
注意事項
雲視頻會議作為阿里雲官方事件來源,目前只對中國香港和華東1(杭州)兩個地區開放。
雲視頻會議事件通知事件流
本文以雲視頻會議為例,為您介紹阿里雲服務接入事件匯流排EventBridge的流程。

步驟一:建立事件規則
雲視頻會議事件會發布到雲端服務專用匯流排。事件匯流排EventBridge為您內建了雲端服務專用匯流排default,您無需再建立。為雲端服務專用匯流排建立事件規則的步驟如下:
- 登入事件匯流排EventBridge控制台。
- 在左側導覽列,單擊事件匯流排。
- 在頂部功能表列,選擇地區。
- 在事件匯流排頁面,單擊雲端服務專用事件匯流排default。
- 在左側導覽列,單擊事件規則。
- 在事件规则頁面,單擊创建规则。
- 在创建规则頁面,完成以下操作:
- 在配置基本信息設定精靈頁面,在名稱文字框輸入MyRule,在描述文字框輸入將雲視頻會議狀態事件路由到指定HTTP網關。,然後單擊下一步。
- 在配置事件模式設定精靈頁面,事件源类型選擇阿里雲官方事件來源,事件來源選擇acs.aliyuncvc 雲會議,事件类型選擇会议状态,然後單擊下一步。
- 在配置事件目标設定精靈頁面,配置事件目標,然後單擊创建。
- 服務類型:單擊HTTP。
- URL:輸入地址http://example.com/eventBridge/processEvent。
- Body:單擊完整事件。
- 網路類型:單擊公网。
重要 目標服務和事件規則必須處於同一地區。
步驟二:使用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 receiveMessage(@RequestBody String data) {
log.info("receiveEvent");
log.info(data);
return "received";
}
}