mirror of
https://github.com/adidas/api-guidelines.git
synced 2025-10-25 15:19:19 +00:00
2.8 KiB
2.8 KiB
Channels
All AsyncAPI specs MUST include definitions for the channels (Kafka topics) including:
- Description of the topic
- Servers in which the topic is available
- This is a reference to one of the server identifiers included in the servers section
- publish/subscribe operations
- Operation ID
- Summary or short description for the operation
- Description for the operation
- Security schemes
- Tags
- External Docs
- Message details
In addition to those supported fields, it MAY be possible to use extension attributes (using the x- prefix) to specify specific configuration parameters and metadata. In so, the recommended attributes to use are:
- x-metadata
- To include additional configuration specific to your team or project
- x-configurations
- To include Kafka configuration parameters and producers/consumers
As the parameters can be different per environment, it is very convenient to add an additional level for the environment.
As part of the publish/subscribe operations, the spec SHOULD specify the different Kafka clients currently consuming from the different topics for each cluster/environment. For this, the extended attributes x-producers and x-consumers will be used.
...
channels:
namespace.source.event.topic-name:
description: 'A description of the purpose of the topic and the contained information'
servers: ['playground-dev', 'playground-sit', 'playground-pro']
x-metadata:
myField1: 'myValue1'
myField2: 'myValue2'
x-configurations:
playground.dev:
kafka:
partitions: '12'
replicas: '1'
topicConfiguration:
min.insync.replicas: '1'
retention.ms: '2592000000'
playground.sit:
kafka:
partitions: '12'
replicas: '2'
topicConfiguration:
min.insync.replicas: '1'
retention.ms: '2592000000'
publish:
operationId: 'producer'
summary: 'Description for the operation'
description: 'An extensive explanation about the operation'
security:
- producerAcl: []
tags:
- name: 'tagA'
- name: 'tagB'
x-producers:
playground.dev:
- 'producer1'
- 'producer2'
playground.sit:
- 'producer1'
- 'producer2'
playground.pro:
- 'producer3'
- 'producer4'
externalDocs:
description: 'documentation'
url: 'http://confluence.adidas.fdp/catalogue/myTopic'
...
subscribe:
operationId: 'consumer'
...
x-consumers:
playground.dev:
- 'consumer1'
- 'consumer2'
playground.sit:
- 'consumer1'
- 'consumer2'
playground.pro:
- 'consumer3'
...