Spring Cloud Stream/Function:不使用 Java Function/BiFunction 的 Kotlin lambda
Spring Cloud Stream/Function: Kotlin lambdas without the use of Java Function/BiFunction
我有一个使用 Spring Boot 编写的 Kafka 流处理应用程序,使用 spring-cloud-function
和 spring-cloud-stream-binder-kafka-streams
。处理几个流的方法用 @Bean
注释,因此它应该由 spring-cloud-function
提取(而不是使用 @StreamListener
)。当此方法 returns a BiFunction
有效时。但是当我把它作为一个普通的 Kotlin lambda 来尝试时,它没有被 Spring Boot 接收:应用程序启动然后立即结束,因为它找不到 运行.
的函数
据我在 the documentation 中所见,这应该可行。
这是起作用的声明:
@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
吗?
目前(在 3.0 中),Kafka Streams 绑定功能支持需要 java.util.function
类型。它不适用于 Kotlin 中的标准函数(或者我们还没有在这方面验证任何东西)。我们计划将此作为 3.1 功能进行研究。如果您不介意,可以创建一个新问题 here 吗?
我有一个使用 Spring Boot 编写的 Kafka 流处理应用程序,使用 spring-cloud-function
和 spring-cloud-stream-binder-kafka-streams
。处理几个流的方法用 @Bean
注释,因此它应该由 spring-cloud-function
提取(而不是使用 @StreamListener
)。当此方法 returns a BiFunction
有效时。但是当我把它作为一个普通的 Kotlin lambda 来尝试时,它没有被 Spring Boot 接收:应用程序启动然后立即结束,因为它找不到 运行.
据我在 the documentation 中所见,这应该可行。
这是起作用的声明:
@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
吗?
目前(在 3.0 中),Kafka Streams 绑定功能支持需要 java.util.function
类型。它不适用于 Kotlin 中的标准函数(或者我们还没有在这方面验证任何东西)。我们计划将此作为 3.1 功能进行研究。如果您不介意,可以创建一个新问题 here 吗?