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'
事件驅動架構(EDA)使用事件來觸發和服務之間的通信,在使用微服務構建的現代應用程序中很常見。事件是狀態更改或更新,例如將購物項目添加到電子商務網站上的購物車中。
> ##### 1. 客戶端訂閱API
>
> 此時,事件驅動API的客戶端向API注冊希望接收異步更新的意圖,這稱為訂閱。在訂閱時,客戶端通常指定API應該向其發布更新事件的接口。
>
>
>
> 當后臺發生了一些有趣的事情,API以事件的形式異步的將其傳遞給所有訂閱的客戶端。
AsyncAPI文檔的結構以特定格式定義,必須遵循AsyncAPI規范,主要信息結構如下:
– info/信息字段提供關鍵的元數據,包括API的標題、版本、描述、聯系方式和許可證。該領域提供了API的全面概述,幫助開發人員、架構師和其他利益相關者快速掌握其目的和功能。作為AsyncAPI規范的強制性元素,
info
字段通常作為用戶瀏覽API文檔的初始參考點。
serv
er/服務器字段允許您詳細說明一系列服務器,概述應用程序可以連接的網絡端點或消息代理。該領域包括協議、主機、端口和其他選項等重要連接信息,促進了生產、分期或開發等各種環境的連接。channels
/頻道代表了交換消息的通信途徑。您可以指定它們的目的、地址和預期的通信消息格式。特定API的消費者可以理解受支持的基于消息的交互和相應的數據模型。operations
/操作字段用于全面概述應用程序執行的各種操作。它提供了一個清晰、結構化的描述,詳細說明應用程序是否發送或接收消息以及每個操作的具體目的。components
/部件字段允許定義可重用結構或適用于文檔各個部分的定義。components
中詳細描述的項目只有在被此字段外部的屬性明確引用時才成為API的一部分。利用它來避免重復,并提高文檔的可維護性。文檔結構詳細指導參考官方文檔。
scheme
已重命名為protocol
,AsyncAPI引入了一個名為protocolVersion
的新屬性。AsyncAPI支持多個協議,而不僅僅是HTTP,就像OpenAPI一樣。1、Webhooks:是一個由事件消費者管理的可公開訪問的 HTTP POST 接口,事件生產者(比如 API 服務器)可以在事件發生時向 Webhook 發送事件通知。
2、WebSockets:是另一個可以用來構建事件驅動 API 的協議。與 Webhook 不同,WebSocket 協議允許服務器和客戶端之間進行持續的雙向通信,這意味著雙方都可以在需要的時候進行通信以及交換數據。
3、Server-Sent Events(SSE):是一種與 WebSockets 非常相似的通信協議,但隱含條件是只支持單向數據。SSE 允許基于瀏覽器的消費者接收從 API 服務器發送的事件通知流。
AsyncAPI官方文檔
OpenAPI and AsyncAPI10分鐘搞懂事件驅動API
使用AsyncAPI和Springwolf記錄Spring事件驅動API