Spring boot 无法使用传入消息调用侦听器方法,并且没有为ConsumerRecord退出
下面是我对kafka侦听器的方法定义,如果有效负载接收null或空字符串,我想我会得到下面的错误。。。你能帮忙吗Spring boot 无法使用传入消息调用侦听器方法,并且没有为ConsumerRecord退出,spring-boot,apache-kafka,spring-kafka,Spring Boot,Apache Kafka,Spring Kafka,下面是我对kafka侦听器的方法定义,如果有效负载接收null或空字符串,我想我会得到下面的错误。。。你能帮忙吗 @KafkaListener(topics = "${kafka.consumer-topic-name.reservation}", groupId = "${kafka.consumer-group-id.test}", containerFactory = "kafkaListenerContainerFact
@KafkaListener(topics = "${kafka.consumer-topic-name.reservation}", groupId = "${kafka.consumer-group-id.test}",
containerFactory = "kafkaListenerContainerFactory",autoStartup = "${kafka.auto-start.consumer.tets}")
public void consumeReservation(String payload, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic,
@Header(KafkaHeaders.RECEIVED_MESSAGE_KEY) String kafkaKey) {}
[org.springframework.kafka.KafkaListenerEndpointContainer #0-0-C-1] ERROR o.s.k.l.SeekToCurrentErrorHandler - Backoff none exhausted for ConsumerRecord(topic = test_topic, partition = 0, leaderEpoch = 2, offset = 453473, CreateTime = 1601962346576, serialized key size = 41, serialized value size = -1, headers = RecordHeaders(headers = [RecordHeader(key = OPERATION, value = [68, 69, 76, 69, 84, 69]), RecordHeader(key = __Key_TypeId__, value = [99, 108, 75, 101, 121])], isReadOnly = false), key = {
"orgId": "1",
"orderId": "U4000024004"}, value = null)
org.springframework.kafka.listener.ListenerExecutionFailedException:无法对传入消息调用侦听器方法
端点处理程序详细信息:
方法[public void com.demo.test.analytics.testanalytics.consumer.FLReservationKafkaConsumer.consumerreservation(java.lang.String,java.lang.String,java.lang.String)]
Bean[com.demo.test.analytics.testanalytics.consumer.flreservationkafkanconsumer@731702d1];
嵌套异常为org.springframework.messaging.handler.annotation.support.MethodArgumentNotValidException:无法解析public void com.demo.test.analytics.testanalytics.consumer.flReservationKafkanConsumer.ConsumerReservation(java.lang.String、java.lang.String、java.lang.String)中索引0处的方法参数:1个错误:[对象“有效负载”中的错误:代码[];参数[];
默认消息[有效负载值不得为空]
],failedMessage=GenericMessage[payload=org.springframework.kafka.support.KafkaNull@2d99561c,头={
Key_TypeId=[B@19a2dc5f,kafka_offset=453473,OPERATION=[B@7d75c01a,kafka_consumer=org.apache.kafka.clients.consumer.KafkaConsumer@363f44ef,kafka_timestatype=CREATE_TIME,kafka_receivedPartitionId=0,kafka_receivedMessageKey={
“orgId”:“1”,
“订单ID”:“U4000024004”
},kafka_receivedTopic=test_1订单,kafka_ReceivedTime Stamp=1601962346576,kafka_组id=reservation_组id
}];嵌套异常为org.springframework.messaging.handler.annotation.support.MethodArgumentNotValidException:无法解析public void com.demo.test.analytics.testanalytics.consumer.flReservationKafkanConsumer.ConsumerReservation(java.lang.String,java.lang.String,java.lang.String)中索引0处的方法参数:1个错误:[对象“有效负载”中的错误:代码[];参数[];
默认消息[有效负载值不得为空]
],
failedMessage=GenericMessage[payload=org.springframework.kafka.support.KafkaNull@2d99561c,头={
Key_TypeId=[B@19a2dc5f,kafka_offset=453473,OPERATION=[B@7d75c01a,kafka_consumer=org.apache.kafka.clients.consumer.KafkaConsumer@363f44ef,kafka_timestatype=CREATE_TIME,kafka_receivedPartitionId=0,kafka_receivedMessageKey={
“orgId”:“1”,
“订单ID”:“U4000024004”
},kafka_receivedTopic=test_1订单,kafka_ReceivedTime Stamp=1601962346576,kafka_组id=reservation_组id
}]
位于org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.decorateException(KafkaMessageListenerContainer.java:1925)
位于org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeErrorHandler(KafkaMessageListenerContainer.java:1913)
位于org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeRecordListener(KafkaMessageListenerContainer.java:1812)
位于org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeWithRecords(KafkaMessageListenerContainer.java:1739)
位于org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokereRecordListener(KafkaMessageListenerContainer.java:1636)
位于org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeListener(KafkaMessageListenerContainer.java:1366)
位于org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.pollAndInvoke(KafkaMessageListenerContainer.java:1082)
位于org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.run(KafkaMessageListenerContainer.java:990)
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
在java.util.concurrent.FutureTask.run(FutureTask.java:266)处
运行(Thread.java:748)
原因:org.springframework.messaging.handler.annotation.support.MethodArgumentNotValidException:无法解析public void com.demo.test.analytics.testanalytics.consumer.flReservationKafkanconSumer.ConsumerReservation(java.lang.String,java.lang.String,java.lang.String)中索引0处的方法参数:1个错误:[对象“有效负载”中的错误:代码[];参数[];
默认消息[有效负载值不得为空]
]
位于org.springframework.messaging.handler.annotation.support.PayloadMethodArgumentResolver.resolveArgument(PayloadMethodArgumentResolver.java:122)
位于org.springframework.kafka.annotation.KafkaListenerAnnotationBeanPostProcessor$KafkaNullAwarePayloadArgumentResolver.resolveArgument(KafkaListenerAnnotationBeanPostProcessor.java:901)
位于org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:117)
位于org.springframework.messaging.handler.invocation.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:148)
位于org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:116)
位于org.springframework.kafka.listener.adapter.handleAdapter.invoke(handleAdapter.java:48)
位于org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:329)
位于org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:86)
位于org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:51)
位于org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeOnMessage(KafkaMessageListenerContainer.java:1880)
位于org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeOnMessage(KafkaMessageListenerContainer.java:1862)
位于org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeRecor