spring-kafka 监听器签名
Posted
技术标签:
【中文标题】spring-kafka 监听器签名【英文标题】:spring-kafka listener signature 【发布时间】:2022-01-03 03:16:39 【问题描述】:我尝试在 *** 上搜索此内容,但找不到合理的答案。我对使用@Kafkalistener 注释的方法的签名感到好奇,我们需要遵循什么约定吗?如果我们想通过方法注入传入一个 Spring 管理的 bean 怎么办?我试图通过方法注入将服务类传递给 kafka 侦听器 -
private fun defaultListener(payload: ByteArray, @Headers messageHeaders: MessageHeaders, ack: Acknowledgment, callbackService: CallbackService)
// Do something
我得到以下异常 -
org.springframework.messaging.converter.MessageConversionException: Cannot handle message; nested exception is org.springframework.messaging.converter.MessageConversionException: Cannot convert from [[B] to [com.test.kafka-demo.service.CallbackService]
如果我将依赖服务类设为 Autowired,则可以正常工作。
【问题讨论】:
你会通过类构造函数或字段来连接bean,而不是方法签名 【参考方案1】:侦听器方法中的所有参数必须来自ConsumerRecord
(或记录本身)+ 消费者和/或使用手动提交时的确认。
@Payload
(或无注释)从record.value()
转换(如有必要)。
您不能在那里添加任意 bean 引用。
【讨论】:
以上是关于spring-kafka 监听器签名的主要内容,如果未能解决你的问题,请参考以下文章
springboot集成kafka详细步骤(发送及监听消息示例)