springboot消费kafka Listener method could not be invoked with the incoming message

本文介绍了在使用SpringBoot集成Kafka处理MySQL CDC消息时遇到的一个问题,当MySQL删除记录时,Kafka监听器方法无法被调用,报错'Listener method could not be invoked with the incoming message'。原因是MySQL删除操作导致Kafka产生了两个消息,第一个正常,第二个为空。解决方法是在监听器中处理这种情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

bug背景:使用mysql cdc kafka 处理消息,当mysql删除一条记录时会触发此bug
错误信息:

org.springframework.kafka.listener.ListenerExecutionFailedException: Listener method could not be invoked with the incoming message
Endpoint handler details:
Method [public void com.flex.notify.listener.NotifyListener.preOrder(java.lang.String)]
Bean [com.flex.notify.listener.NotifyListener@ce6cd62]; nested exception is org.springframework.messaging.handler.annotation.support.MethodArgumentNotValidException: Could not resolve method parameter at index 0 in public void com.flex.notify.listener.NotifyListener.preOrder(java.lang.String): 1 error(s): [Error in object 'message': codes []; arguments []; default message [Payload value must not be empty]] , failedMessage=GenericMessage [payload=org.springframework.kafka.support.KafkaNull@4e24013e, headers={
   kafka_offset=1807, kafka_consumer=org.apache.kafka.clients.consumer.KafkaConsumer@852319e, kafka_timestampType=CREATE_TIME, kafka_receivedPartitionId=0, kafka_receivedMessageKey={
   "schema":{
   "type":"struct","fields":[{
   "type":"string","optional":false,"default":"","field":"id"}],"optional":false,"name":"debezium_connector.flex.pre_order.Key"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值