多个yaml文件之间的AsyncAPI定义



我是使用AsyncAPI规范的新手。我在一个YAML文件中定义了一个AsyncAPI定义。随着定义的发展,我想把它分成几个文件。但我不知道该怎么做。

我在谷歌上搜索了一些例子,但都找到了不错的结果。有人能给我举几个关于这个话题的例子吗?或者引导我这样做。

提前谢谢。

简单的答案是,尽可能使用引用对象($ref(,因此请确保检查AsyncAPI规范,以确定在哪里可以使用引用。

通过这种方式,您可以使用相对引用来实现将AsyncAPI文档拆分为多个文件:

##### ./asyncapi.yaml
asyncapi: 2.3.0
...
channels:
user/signedup:
subscribe:
message:
$ref: "./messages/userSignedUp.yaml"
##### ./messages/userSignedUp.yaml
name: UserSignup
title: User signup
summary: Action to sign a user up.
description: A longer description
contentType: application/json
payload:
...

如果你使用消息的所有权(比如应用程序A拥有应用程序B使用的消息(,你可以这样引用它们:

##### ./asyncapi.A.yaml
asyncapi: 2.3.0
...
channels:
user/signedup:
subscribe:
message:
$ref: "#/components/messages/userSignedUp"
components: 
messages: 
UserSignup:
name: UserSignup
title: User signup
summary: Action to sign a user up.
description: A longer description
contentType: application/json
payload:
...
##### ./asyncapi.B.yaml
...
channels:
user/signedup:
publish:
message:
$ref: "./asyncapi.A.yaml#/components/messages/userSignedUp"

我们目前正在讨论如何定义AsyncAPI文档,以及可重用性如何发挥作用(使用不同的示例(-https://github.com/asyncapi/spec/issues/628#issuecomment-968050476

工具

当您拆分AsyncAPI文档时,您可能需要一些工具来帮助您更轻松地使用它们。

许多工具仍在在制品中,但重要的是要尝试并适应实际用例。所以我想鼓励使用它们,并报告您的发现!

Bundler

既然您已经开始使用可重用性,那么您可能会遇到想要将事物重新捆绑在一起的用例。这就是AsyncAPI Bundler发挥作用的地方。

优化器

如果您已经有了AsyncAPI文档,希望将其拆分为更可重用的块,那么可以使用AsyncAPI优化器来帮助您完成这项工作。

相关内容

  • 没有找到相关文章

最新更新