info:
title: Cool Example
version: 0.1.0
channels:
userSignedUp:
address: user/signedup
messages:
userSignedUp:
description: An event describing that a user just signed up.
payload:
type: object
properties:
fullName:
type: string
email:
type: string
format: email
age:
type: integer
minimum: 18
operations:
userSignedUp:
action: send
channel:
$ref: '#/channels/userSignedUp'

事件驅(qū)動架構(gòu)(EDA)

事件驅(qū)動架構(gòu)(EDA)使用事件來觸發(fā)和服務(wù)之間的通信,在使用微服務(wù)構(gòu)建的現(xiàn)代應(yīng)用程序中很常見。事件是狀態(tài)更改或更新,例如將購物項(xiàng)目添加到電子商務(wù)網(wǎng)站上的購物車中。

1. 客戶端訂閱API

此時(shí),事件驅(qū)動API的客戶端向API注冊希望接收異步更新的意圖,這稱為訂閱。在訂閱時(shí),客戶端通常指定API應(yīng)該向其發(fā)布更新事件的接口。

2. 異步事件交付

當(dāng)后臺發(fā)生了一些有趣的事情,API以事件的形式異步的將其傳遞給所有訂閱的客戶端。

AsyncAPI文檔結(jié)構(gòu)

AsyncAPI文檔的結(jié)構(gòu)以特定格式定義,必須遵循AsyncAPI規(guī)范,主要信息結(jié)構(gòu)如下:

– info/信息字段提供關(guān)鍵的元數(shù)據(jù),包括API的標(biāo)題、版本、描述、聯(lián)系方式和許可證。該領(lǐng)域提供了API的全面概述,幫助開發(fā)人員、架構(gòu)師和其他利益相關(guān)者快速掌握其目的和功能。作為AsyncAPI規(guī)范的強(qiáng)制性元素,info字段通常作為用戶瀏覽API文檔的初始參考點(diǎn)。

文檔結(jié)構(gòu)詳細(xì)指導(dǎo)參考官方文檔

OpenAPI和AsyncAPI的規(guī)范比較

其它構(gòu)建事件驅(qū)動 API的技術(shù)

1、Webhooks:是一個(gè)由事件消費(fèi)者管理的可公開訪問的 HTTP POST 接口,事件生產(chǎn)者(比如 API 服務(wù)器)可以在事件發(fā)生時(shí)向 Webhook 發(fā)送事件通知。

2、WebSockets:是另一個(gè)可以用來構(gòu)建事件驅(qū)動 API 的協(xié)議。與 Webhook 不同,WebSocket 協(xié)議允許服務(wù)器和客戶端之間進(jìn)行持續(xù)的雙向通信,這意味著雙方都可以在需要的時(shí)候進(jìn)行通信以及交換數(shù)據(jù)。

3、Server-Sent Events(SSE):是一種與 WebSockets 非常相似的通信協(xié)議,但隱含條件是只支持單向數(shù)據(jù)。SSE 允許基于瀏覽器的消費(fèi)者接收從 API 服務(wù)器發(fā)送的事件通知流。

參考資料

AsyncAPI官方文檔
OpenAPI and AsyncAPI10分鐘搞懂事件驅(qū)動API
使用AsyncAPI和Springwolf記錄Spring事件驅(qū)動API

一站搜索、試用、比較全球API!
冪簡集成已收錄 6124種API!
試用API,一次比較多個(gè)渠道