Документация / AsyncAPI
AsyncAPI 3.0
Редактор «Помощника SA» поддерживает и версию 3.0 — именно в ней написан пример нового документа. Версия 3.0 не совместима с 2.x напрямую; ниже — главные отличия.
Основные изменения
| 2.x | 3.0 |
|---|---|
Операции — внутри канала (publish / subscribe, «с точки зрения клиента») | Операции — отдельный раздел operations с явным действием action: send или action: receive («с точки зрения приложения») |
| Имя канала = его адрес | Канал — объект с полем address; имя канала — ключ, адрес может отличаться |
| Сообщения — в операции | Сообщения — в канале (channels.*.messages), операция ссылается на них |
Сервер: url | Сервер: host, pathname, protocol |
| Запрос-ответ описывается двумя каналами | Есть объект reply у операции |
Схема сообщения — в payload с schemaFormat у сообщения | Схему другого формата задают через Multi Format Schema Object (schemaFormat + schema) |
Пример
asyncapi: 3.0.0
info:
title: Сервис заказов
version: 1.0.0
servers:
production:
host: kafka.example.ru:9092
protocol: kafka
channels:
orderCreated:
address: orders.created
messages:
orderCreated:
$ref: '#/components/messages/OrderCreated'
orderCommands:
address: orders.commands
messages:
cancelOrder:
$ref: '#/components/messages/CancelOrder'
operations:
sendOrderCreated:
action: send
channel:
$ref: '#/channels/orderCreated'
summary: Сервис сообщает о созданном заказе
receiveCancelOrder:
action: receive
channel:
$ref: '#/channels/orderCommands'
summary: Сервис принимает команду отмены
components:
messages:
OrderCreated:
payload:
type: object
required: [orderId]
properties:
orderId:
type: string
format: uuid
CancelOrder:
payload:
type: object
properties:
orderId:
type: string
reason:
type: string
Запрос и ответ
operations:
getOrderStatus:
action: send
channel:
$ref: '#/channels/statusRequests'
reply:
channel:
$ref: '#/channels/statusReplies'
Переход с 2.x
subscribeв 2.x →action: sendв 3.0 (приложение отправляет),publish→action: receive;- адрес канала переносится в
address, а сообщения — вchannels.*.messages; servers.*.urlделится наhostиpathname;- для автоматического перевода есть официальный инструмент
asyncapi convert(AsyncAPI CLI).
Похожие инструменты
Обновлено: 30 сентября 2026 г.
