https://cloud.spring.io/spring-cloud-static/spring-cloud-stream-binder-kafka/3.0.0.M3/reference/html/spring-cloud-stream-binder-kafka.html#_programming_model显示了一个示例,其中可以使用属性spring.cloud.stream.bindings.process_in.destination
设置输入主题。
现在我想使用依赖注入,例如
@Bean
public java.util.function.Consumer<KStream<Object, String>> process(JavaMailSender mailSender) {...}
(基于Spring Boot)启动应用程序时,属性spring.cloud.stream.bindings.process_in.destination
被忽略,而是订阅了输入主题input
。
编辑:这是Kotlin代码(不导入)
Mailer.kt:
@Configuration
class Mailer {
@Bean
fun sendMail(/*mailSender: JavaMailSender*/) = Consumer<KStream<Any, Mail>> { input ->
input.foreach { _, mail -> println("mail = $mail") }
}
}
Mail.kt:
data class Mail(var from: String = "", var to: String = "", var subject: String = "", var body: String = "")
Application.kt:
@SpringBootApplication
class Application
fun main(args: Array<String>) {
runApplication<Application>(*args) {
}
}
application.yml ::
spring.cloud.stream:
bindings.sendMail_in.destination: mail
kafka.binder.configuration.listeners: PLAINTEXT://localhost:9092
答案 0 :(得分:1)
活页夹中存在一些问题,这些问题未能正确autowire
bean
提供给功能/消费者的bean。最新快照解决了这些问题。请确保您使用的是最新快照(3.0.0.BUILD-SNAPSHOT
)。这是sample application,可用于您提供的相同方案。