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)使用事件來觸發(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ā)布更新事件的接口。
當(dāng)后臺發(fā)生了一些有趣的事情,API以事件的形式異步的將其傳遞給所有訂閱的客戶端。
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)。
serv
er/服務(wù)器字段允許您詳細(xì)說明一系列服務(wù)器,概述應(yīng)用程序可以連接的網(wǎng)絡(luò)端點(diǎn)或消息代理。該領(lǐng)域包括協(xié)議、主機(jī)、端口和其他選項(xiàng)等重要連接信息,促進(jìn)了生產(chǎn)、分期或開發(fā)等各種環(huán)境的連接。channels
/頻道代表了交換消息的通信途徑。您可以指定它們的目的、地址和預(yù)期的通信消息格式。特定API的消費(fèi)者可以理解受支持的基于消息的交互和相應(yīng)的數(shù)據(jù)模型。operations
/操作字段用于全面概述應(yīng)用程序執(zhí)行的各種操作。它提供了一個(gè)清晰、結(jié)構(gòu)化的描述,詳細(xì)說明應(yīng)用程序是否發(fā)送或接收消息以及每個(gè)操作的具體目的。components
/部件字段允許定義可重用結(jié)構(gòu)或適用于文檔各個(gè)部分的定義。components
中詳細(xì)描述的項(xiàng)目只有在被此字段外部的屬性明確引用時(shí)才成為API的一部分。利用它來避免重復(fù),并提高文檔的可維護(hù)性。文檔結(jié)構(gòu)詳細(xì)指導(dǎo)參考官方文檔。
scheme
已重命名為protocol
,AsyncAPI引入了一個(gè)名為protocolVersion
的新屬性。AsyncAPI支持多個(gè)協(xié)議,而不僅僅是HTTP,就像OpenAPI一樣。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