0

作为工作项目的一部分,我最近开始尝试使用AsyncAPI 。我的任务是看看我们是否可以使用 AsyncAPI 生成代码以将测试对象发送到我们现有的 Kafka 队列。我对卡夫卡不熟悉。

我从AsyncAPI playground的 API 规范开始,并尝试从中生成一些 Java Spring 代码。但是,我遇到了一个问题,在操场规范中,通道名称(将对应于 Kafka 主题)被参数化,例如:

smartylighting/streetlights/1/0/event/{streetlightId}/lighting/measured

是否可以通过这种方式参数化 Kafka 主题,使生成的服务具有以下注释?

@KafkaListener(topics = "smartylighting.streetlights.1.0.action.{streetlightId}.lighting.measured", groupId = "myGroupId")

或者是否需要更改此规范(我只是用来学习 AsyncAPI)以使主题名称保持不变,而是提供路灯 ID 作为有效负载数据?

提前致谢。

4

2 回答 2

2

这是目前java-spring 模板缺少的功能之一。

不支持主题参数

请考虑使用您的案例的详细描述创建一个新问题。

于 2020-05-28T22:30:42.757 回答
1

我不熟悉 Async API,但是使用 Spring for Apache Kafka,主题名称可以包含属性占位符

topics = "foo.${some.property}.bar"

some.propertySpring 环境中可用的位置,例如-Dsome.property命令行或 spring Bootapplication.properties或 yaml 文件。

您还可以使用 Spring 表达式语言执行更高级的配置。

topics = "#{someBean.somePropeerty}"
于 2020-05-25T15:29:54.610 回答