Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: fix adeo-kafka-request-reply-asyncapi.yml example #1002

Merged
merged 3 commits into from
Dec 12, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
239 changes: 97 additions & 142 deletions examples/adeo-kafka-request-reply-asyncapi.yml
Original file line number Diff line number Diff line change
@@ -1,187 +1,147 @@
asyncapi: 3.0.0
info:
title: Adeo AsyncAPI Case Study
version: "%REPLACED_BY_MAVEN%"
version: '%REPLACED_BY_MAVEN%'
description: >
This Adeo specification illustrates how ADEO uses AsyncAPI to document some of their exchanges
This Adeo specification illustrates how ADEO uses AsyncAPI to document some
of their exchanges.
contact:
name: AsyncAPI team
email: info@asyncapi.io
name: AsyncAPI Community
email: case-study@asyncapi.com
tags:
- name: costing
description: "Costing channels, used by Costing clients."
description: Costing channels, used by Costing clients.
servers:
production:
host: "prod.url:9092"
protocol: kafka-secure
host: prod.url:9092
protocol: kafka
description: Kafka PRODUCTION cluster
security:
- $ref: '#/components/securitySchemes/sasl-ssl'
bindings:
kafka:
schemaRegistryUrl: >-
https://schema-registry.prod.url/
schemaRegistryUrl: https://schema-registry.prod.url/
staging:
host: "staging.url:9092"
protocol: kafka-secure
host: staging.url:9092
protocol: kafka
description: Kafka STAGING cluster for `uat` and `preprod` environments
security:
- $ref: '#/components/securitySchemes/sasl-ssl'
bindings:
kafka:
schemaRegistryUrl: >-
https://schema-registry.staging.url/
schemaRegistryUrl: https://schema-registry.prod.url/
dev:
host: "dev.url:9092"
protocol: kafka-secure
host: dev.url:9092
protocol: kafka
description: Kafka DEV cluster for `dev` and `sit` environments
security:
- $ref: '#/components/securitySchemes/sasl-ssl'
bindings:
kafka:
schemaRegistryUrl: >-
https://schema-registry.dev.url/

schemaRegistryUrl: https://schema-registry.prod.url/
channels:
costingRequest:
address: "adeo-{env}-case-study-COSTING-REQUEST-{version}"
costingRequestChannel:
address: adeo-{env}-case-study-COSTING-REQUEST-{version}
description: >
Use this topic to do a Costing Request to Costing product.
We use the
Use this topic to do a Costing Request to Costing product. We use the
[**RecordNameStrategy**](https://docs.confluent.io/platform/current/schema-registry/serdes-develop/index.html#subject-name-strategy)
to infer the messages schema.
You have to define `x-value.subject.name.strategy` to
to infer the messages schema. You have to define
`value.subject.name.strategy` to
`io.confluent.kafka.serializers.subject.RecordNameStrategy` in your
producer to use the schema we manage.
The schema below illustrates how Costing Request messages are
handled.
producer to use the schema we manage. The schema below illustrates how
Costing Request messages are handled.
![](https://user-images.githubusercontent.com/5501911/188920831-689cec5f-8dc3-460b-8794-0b54ec8b0ac8.png)
parameters:
env:
$ref: "#/components/parameters/Env"
$ref: '#/components/parameters/Env'
version:
$ref: "#/components/parameters/Version"
$ref: '#/components/parameters/Version'
bindings:
kafka:
replicas: 3
partitions: 3
topicConfiguration:
cleanup.policy: [ "delete" ]
retention.ms: 604800000
cleanup.policy:
- delete
retention.ms: 60000000
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
retention.ms: 60000000
retention.ms: 604800000

messages:
costingRequest:
$ref: "#/components/messages/costingRequestV1"





costingResponse:
address: "adeo-{env}-case-study-COSTING-RESPONSE-{version}"
CostingRequest:
$ref: '#/components/messages/costingRequestV1'
costingResponseChannel:
address: null
description: >
This topic is used to REPLY Costing Requests and is targeted by the
`REPLY_TOPIC` header.
**You must grant PUBLISH access to our `svc-ccr-app` service account.**.
We use the
`REPLY_TOPIC` header. **You must grant PUBLISH access to our `svc-ccr-app`
service account.**. We use the
[**RecordNameStrategy**](https://docs.confluent.io/platform/current/schema-registry/serdes-develop/index.html#subject-name-strategy)
to infer the messages schema.
You have to define `key.subject.name.strategy` and
`x-value.subject.name.strategy` to
to infer the messages schema.

Topic should follow pattern "adeo-{env}-case-study-COSTING-RESPONSE-{version}"

You have to define
`key.subject.name.strategy` and `value.subject.name.strategy` to
`io.confluent.kafka.serializers.subject.RecordNameStrategy` in your
consumer.
The schema below illustrates how Costing Response messages are
consumer. The schema below illustrates how Costing Response messages are
handled.
![](https://user-images.githubusercontent.com/5501911/188920831-689cec5f-8dc3-460b-8794-0b54ec8b0ac8.png)
parameters:
env:
$ref: "#/components/parameters/Env"
version:
$ref: "#/components/parameters/Version"

bindings:
kafka:
x-key.subject.name.strategy:
type: string
description: >
We use the RecordNameStrategy to infer the messages schema.
Use
`x-key.subject.name.strategy=io.confluent.kafka.serializers.subject.RecordNameStrategy`
We use the RecordNameStrategy to infer the messages schema. Use
`key.subject.name.strategy=io.confluent.kafka.serializers.subject.RecordNameStrategy`
in your consumer configuration.
x-value.subject.name.strategy:
type: string
description: >
We use the RecordNameStrategy to infer the messages schema.
Use
`x-value.subject.name.strategy=io.confluent.kafka.serializers.subject.RecordNameStrategy`
We use the RecordNameStrategy to infer the messages schema. Use
`value.subject.name.strategy=io.confluent.kafka.serializers.subject.RecordNameStrategy`
in your consumer configuration.
tags:
- name: costing
messages:
costingResponse:
$ref: "#/components/messages/costingResponse"




$ref: '#/components/messages/costingResponse'
operations:
requestCosting:
action: receive
channel:
$ref: '#/channels/costingRequest'
reply:
channel:
$ref: '#/channels/costingResponse'
address:
location: '$message.header#/REPLY_TOPIC'
summary: |
[COSTING] Request one or more Costing calculation for any product
description: >
You can try a costing request using our [Conduktor producer
template](https://conduktor.url)
tags:
- name: costing
bindings:
kafka:
groupId:
type: string
description: >
The groupId must be prefixed by your `svc` account, deliver by the
Adeo Kafka team.
This `svc` must have the write access to the topic.
x-value.subject.name.strategy:
type: string
description: >
We use the RecordNameStrategy to infer the messages schema.
Use
`x-value.subject.name.strategy=io.confluent.kafka.serializers.subject.RecordNameStrategy`
in your producer configuration.
getCostingResponse:
action: send
channel:
$ref: '#/channels/costingResponse'
summary: >
[COSTING] Get the costing responses matching an initial Costing
Request.
bindings:
kafka:
groupId:
type: string
description: >
The groupId must be prefixed by your `svc` account, deliver by the
Adeo Kafka team.
This `svc` must have the read access to the topic.
tags:
- name: costing




receiveACostingRequest:
action: receive
channel:
$ref: '#/channels/costingRequestChannel'
reply:
channel:
$ref: '#/channels/costingResponseChannel'
address:
location: $message.header#/REPLY_TOPIC
summary: |
[COSTING] Request one or more Costing calculation for any product
description: >
You can try a costing request using our [Conduktor producer
template](https://conduktor.url/)
tags:
- name: costing
bindings:
kafka:
groupId:
type: string
description: >
The groupId must be prefixed by your `svc` account, deliver by the
Adeo Kafka team. This `svc` must have the write access to the topic.
x-value.subject.name.strategy:
type: string
description: >
We use the RecordNameStrategy to infer the messages schema. Use
`value.subject.name.strategy=io.confluent.kafka.serializers.subject.RecordNameStrategy`
in your producer configuration.

components:
correlationIds:
costingCorrelationId:
description: >
This correlation ID is used for message tracing and messages
correlation.
This correlation ID is generated at runtime based on the `REQUEST_ID`
and sent to the RESPONSE message.
correlation. This correlation ID is generated at runtime based on the
`REQUEST_ID` and sent to the RESPONSE message.
location: $message.header#/REQUEST_ID
messages:
costingRequestV1:
Expand All @@ -191,7 +151,7 @@ components:
tags:
- name: costing
correlationId:
$ref: "#/components/correlationIds/costingCorrelationId"
$ref: '#/components/correlationIds/costingCorrelationId'
headers:
type: object
required:
Expand All @@ -201,17 +161,17 @@ components:
- REPLY_TOPIC
properties:
REQUEST_ID:
$ref: "#/components/schemas/RequestId"
$ref: '#/components/schemas/RequestId'
REPLY_TOPIC:
$ref: "#/components/schemas/ReplyTopic"
$ref: '#/components/schemas/ReplyTopic'
REQUESTER_ID:
$ref: "#/components/schemas/RequesterId"
$ref: '#/components/schemas/RequesterId'
REQUESTER_CODE:
$ref: "#/components/schemas/RequesterCode"
$ref: '#/components/schemas/RequesterCode'
payload:
schemaFormat: application/vnd.apache.avro;version=1.9.0
schema:
$ref: "https://www.asyncapi.com/resources/casestudies/adeo/CostingRequestPayload.avsc"
$ref: https://www.asyncapi.com/resources/casestudies/adeo/CostingRequestPayload.avsc
costingResponse:
name: CostingResponse
title: Costing Response
Expand All @@ -220,17 +180,16 @@ components:
- name: costing
description: >
Please refer to the `CostingResponseKey.avsc` schema, available on [our
github
project](https://github.url/).
github project](https://github.url/).
correlationId:
$ref: "#/components/correlationIds/costingCorrelationId"
$ref: '#/components/correlationIds/costingCorrelationId'
headers:
type: object
properties:
CALCULATION_ID:
$ref: "#/components/schemas/MessageId"
$ref: '#/components/schemas/MessageId'
CORRELATION_ID:
$ref: "#/components/schemas/CorrelationId"
$ref: '#/components/schemas/CorrelationId'
REQUEST_TIMESTAMP:
type: string
format: date-time
Expand All @@ -239,14 +198,10 @@ components:
type: string
format: date-time
description: Technical timestamp for the costing calculation
bindings:
kafka:
key:
$ref: "https://deploy-preview-921--asyncapi-website.netlify.app/resources/casestudies/adeo/CostingResponseKey.avsc"
Comment on lines -242 to -245
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this part need to be kept

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feel free to open a new PR.
I had to merge asap because CLI was affected, we don't know if other tools as well. The fix for that is also a wip so it doesnt happen again.

payload:
schemaFormat: application/vnd.apache.avro;version=1.9.0
schema:
$ref: "https://deploy-preview-921--asyncapi-website.netlify.app/resources/casestudies/adeo/CostingResponsePayload.avsc"
schema:
$ref: https://www.asyncapi.com/resources/casestudies/adeo/CostingResponsePayload.avsc
schemas:
RequesterId:
type: string
Expand Down Expand Up @@ -308,14 +263,14 @@ components:
Env:
description: Adeo Kafka Environement for messages publications.
enum:
- dev
- sit
- uat1
- preprod
- prod
- dev
- sit
- uat1
- preprod
- prod
Version:
description: the topic version you want to use
examples:
examples:
- V1
default: V1
securitySchemes:
Expand Down