我有一个使用 Spring Boot 编写的 Kafka 流处理应用程序,使用spring-cloud-function
和spring-cloud-stream-binder-kafka-streams
. 处理几个流的方法用 注释,因此它应该被(而不是使用)@Bean
拾取。当此方法返回 a时,它可以工作。但是当我将它作为普通的 Kotlin lambda 进行尝试时,Spring Boot 并没有发现它:应用程序启动然后立即结束,因为它没有找到要运行的函数。spring-cloud-function
@StreamListener
BiFunction
从我在文档中可以看到,这应该可行。
这是有效的声明:
@Bean
fun process():
BiFunction<KStream<String, Foo>, GlobalKTable<String, Bar>, KStream<String, Baz>> =
BiFunction { foo, bar ->
...
这是不起作用的声明:
@Bean
fun process():
(foo: KStream<String, Foo>, bar: GlobalKTable<String, Bar>) -> KStream<String, Baz> =
{ foo, bar ->
...
(两种情况下方法的内容都是一样的。)
根据文档,我已将spring-cloud-function-kotlin
模块添加到类路径中,方法是将其添加到build.gradle.kts
:
implementation("org.springframework.cloud:spring-cloud-function-kotlin")
Spring Cloud Stream 的版本是Hoxton.RC1
.
我还需要做些什么来获取该功能吗?还是我需要BiFunction
在这种情况下使用?