09.Listener

Listener概述

JavaWeb的三大组件之一的监听器(Listener)可以用户监听域对象。
Javaweb四大域对象:
HttpServletContext HtttpSession HttpRequest HttpPageContext
Listener监听域对象创建和销毁,属性的变化

Listener的种类

在这里插入图片描述

Listener的常用方法

以HttpSessionListener为例,这种监听创建与销毁的Listener一般有两个方法。

public class MySessionListener implements HttpSessionListener {

    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
    //监听域对象的创建方法,一但有新的session创建,便会回调该方法
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
	//监听域对象的销毁
    }
}

Listener监听域对象属性的变化一般有三个方法,HttpSessionAttributeListener接口为例

public class MySessionListener implements HttpSessionAttributeListener {

    @Override
    public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) {
	//监听有新数据添加到域对象
    }

    @Override
    public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {
	//监听有数据从域对象移除
    }

    @Override
    public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {
	//监听域对象有数据更改
    }
}
加了enableScheduling注解之后报错:Sent: Hello Kafka, I'mW0111267 2025-09-04 19:23:15.042 ERROR 11116 --- [-consumer-0-C-1] o.s.kafka.listener.LoggingErrorHandler : Error while processing: ConsumerRecord(topic = test-topic, partition = 0, leaderEpoch = 0, offset = 0, CreateTime = 1756984994994, serialized key size = -1, serialized value size = 24, headers = RecordHeaders(headers = [], isReadOnly = false), key = null, value = Hello Kafka, I'mW0111267) org.springframework.kafka.listener.ListenerExecutionFailedException: invokeHandler Failed; nested exception is java.lang.IllegalStateException: No Acknowledgment available as an argument, the listener container must have a MANUAL Ackmode to populate the Acknowledgment.; nested exception is java.lang.IllegalStateException: No Acknowledgment available as an argument, the listener container must have a MANUAL Ackmode to populate the Acknowledgment. at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.decorateException(KafkaMessageListenerContainer.java:1374) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeErrorHandler(KafkaMessageListenerContainer.java:1363) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeRecordListener(KafkaMessageListenerContainer.java:1276) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeWithRecords(KafkaMessageListenerContainer.java:1247) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeRecordListener(KafkaMessageListenerContainer.java:1161) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeListener(KafkaMessageListenerContainer.java:970) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.pollAndInvoke(KafkaMessageListenerContainer.java:774) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.run(KafkaMessageListenerContainer.java:707) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_362-362] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_362-362] at java.lang.Thread.run(Thread.java:750) [na:1.8.0_362-362] Caused by: java.lang.IllegalStateException: No Acknowledgment available as an argument, the listener container must have a MANUAL Ackmode to populate the Acknowledgment. at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:288) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:79) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:50) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeOnMessage(KafkaMessageListenerContainer.java:1325) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeOnMessage(KafkaMessageListenerContainer.java:1306) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeRecordListener(KafkaMessageListenerContainer.java:1266) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] ... 8 common frames omitted Caused by: org.springframework.messaging.converter.MessageConversionException: Cannot convert from [java.lang.String] to [org.springframework.kafka.support.Acknowledgment] for GenericMessage [payload=Hello Kafka, I'mW0111267, headers={kafka_offset=0, kafka_consumer=org.apache.kafka.clients.consumer.KafkaConsumer@6f24d4, kafka_timestampType=CREATE_TIME, kafka_receivedMessageKey=null, kafka_receivedPartitionId=0, kafka_receivedTopic=test-topic, kafka_receivedTimestamp=1756984994994}] at org.springframework.messaging.handler.annotation.support.PayloadArgumentResolver.resolveArgument(PayloadArgumentResolver.java:144) ~[spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE] at org.springframework.kafka.annotation.KafkaListenerAnnotationBeanPostProcessor$KafkaHandlerMethodFactoryAdapter$1.resolveArgument(KafkaListenerAnnotationBeanPostProcessor.java:837) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:117) ~[spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE] at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:148) ~[spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE] at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:116) ~[spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE] at org.springframework.kafka.listener.adapter.HandlerAdapter.invoke(HandlerAdapter.java:48) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:283) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] ... 13 common frames omitted Sent: Hello Kafka, I'mW0111267 2025-09-04 19:23:15.893 ERROR 11116 --- [-consumer-0-C-1] o.s.kafka.listener.LoggingErrorHandler : Error while processing: ConsumerRecord(topic = test-topic, partition = 0, leaderEpoch = 0, offset = 1, CreateTime = 1756984995884, serialized key size = -1, serialized value size = 24, headers = RecordHeaders(headers = [], isReadOnly = false), key = null, value = Hello Kafka, I'mW0111267) org.springframework.kafka.listener.ListenerExecutionFailedException: invokeHandler Failed; nested exception is java.lang.IllegalStateException: No Acknowledgment available as an argument, the listener container must have a MANUAL Ackmode to populate the Acknowledgment.; nested exception is java.lang.IllegalStateException: No Acknowledgment available as an argument, the listener container must have a MANUAL Ackmode to populate the Acknowledgment. at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.decorateException(KafkaMessageListenerContainer.java:1374) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeErrorHandler(KafkaMessageListenerContainer.java:1363) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeRecordListener(KafkaMessageListenerContainer.java:1276) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeWithRecords(KafkaMessageListenerContainer.java:1247) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeRecordListener(KafkaMessageListenerContainer.java:1161) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeListener(KafkaMessageListenerContainer.java:970) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.pollAndInvoke(KafkaMessageListenerContainer.java:774) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.run(KafkaMessageListenerContainer.java:707) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_362-362] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_362-362] at java.lang.Thread.run(Thread.java:750) [na:1.8.0_362-362] Caused by: java.lang.IllegalStateException: No Acknowledgment available as an argument, the listener container must have a MANUAL Ackmode to populate the Acknowledgment. at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:288) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:79) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:50) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeOnMessage(KafkaMessageListenerContainer.java:1325) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeOnMessage(KafkaMessageListenerContainer.java:1306) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeRecordListener(KafkaMessageListenerContainer.java:1266) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] ... 8 common frames omitted Caused by: org.springframework.messaging.converter.MessageConversionException: Cannot convert from [java.lang.String] to [org.springframework.kafka.support.Acknowledgment] for GenericMessage [payload=Hello Kafka, I'mW0111267, headers={kafka_offset=1, kafka_consumer=org.apache.kafka.clients.consumer.KafkaConsumer@6f24d4, kafka_timestampType=CREATE_TIME, kafka_receivedMessageKey=null, kafka_receivedPartitionId=0, kafka_receivedTopic=test-topic, kafka_receivedTimestamp=1756984995884}] at org.springframework.messaging.handler.annotation.support.PayloadArgumentResolver.resolveArgument(PayloadArgumentResolver.java:144) ~[spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE] at org.springframework.kafka.annotation.KafkaListenerAnnotationBeanPostProcessor$KafkaHandlerMethodFactoryAdapter$1.resolveArgument(KafkaListenerAnnotationBeanPostProcessor.java:837) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:117) ~[spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE] at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:148) ~[spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE] at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:116) ~[spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE] at org.springframework.kafka.listener.adapter.HandlerAdapter.invoke(HandlerAdapter.java:48) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:283) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] ... 13 common frames omitted Sent: Hello Kafka, I'mW0111267 2025-09-04 19:23:16.900 ERROR 11116 --- [-consumer-0-C-1] o.s.kafka.listener.LoggingErrorHandler : Error while processing: ConsumerRecord(topic = test-topic, partition = 0, leaderEpoch = 0, offset = 2, CreateTime = 1756984996896, serialized key size = -1, serialized value size = 24, headers = RecordHeaders(headers = [], isReadOnly = false), key = null, value = Hello Kafka, I'mW0111267) org.springframework.kafka.listener.ListenerExecutionFailedException: invokeHandler Failed; nested exception is java.lang.IllegalStateException: No Acknowledgment available as an argument, the listener container must have a MANUAL Ackmode to populate the Acknowledgment.; nested exception is java.lang.IllegalStateException: No Acknowledgment available as an argument, the listener container must have a MANUAL Ackmode to populate the Acknowledgment. at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.decorateException(KafkaMessageListenerContainer.java:1374) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeErrorHandler(KafkaMessageListenerContainer.java:1363) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeRecordListener(KafkaMessageListenerContainer.java:1276) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeWithRecords(KafkaMessageListenerContainer.java:1247) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeRecordListener(KafkaMessageListenerContainer.java:1161) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeListener(KafkaMessageListenerContainer.java:970) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.pollAndInvoke(KafkaMessageListenerContainer.java:774) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.run(KafkaMessageListenerContainer.java:707) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_362-362] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_362-362] at java.lang.Thread.run(Thread.java:750) [na:1.8.0_362-362] Caused by: java.lang.IllegalStateException: No Acknowledgment available as an argument, the listener container must have a MANUAL Ackmode to populate the Acknowledgment. at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:288) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:79) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:50) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeOnMessage(KafkaMessageListenerContainer.java:1325) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeOnMessage(KafkaMessageListenerContainer.java:1306) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeRecordListener(KafkaMessageListenerContainer.java:1266) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] ... 8 common frames omitted Caused by: org.springframework.messaging.converter.MessageConversionException: Cannot convert from [java.lang.String] to [org.springframework.kafka.support.Acknowledgment] for GenericMessage [payload=Hello Kafka, I'mW0111267, headers={kafka_offset=2, kafka_consumer=org.apache.kafka.clients.consumer.KafkaConsumer@6f24d4, kafka_timestampType=CREATE_TIME, kafka_receivedMessageKey=null, kafka_receivedPartitionId=0, kafka_receivedTopic=test-topic, kafka_receivedTimestamp=1756984996896}] at org.springframework.messaging.handler.annotation.support.PayloadArgumentResolver.resolveArgument(PayloadArgumentResolver.java:144) ~[spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE] at org.springframework.kafka.annotation.KafkaListenerAnnotationBeanPostProcessor$KafkaHandlerMethodFactoryAdapter$1.resolveArgument(KafkaListenerAnnotationBeanPostProcessor.java:837) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:117) ~[spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE] at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:148) ~[spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE] at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:116) ~[spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE] at org.springframework.kafka.listener.adapter.HandlerAdapter.invoke(HandlerAdapter.java:48) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:283) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] ... 13 common frames omitted Sent: Hello Kafka, I'mW0111267 2025-09-04 19:23:17.890 ERROR 11116 --- [-consumer-0-C-1] o.s.kafka.listener.LoggingErrorHandler : Error while processing: ConsumerRecord(topic = test-topic, partition = 0, leaderEpoch = 0, offset = 3, CreateTime = 1756984997884, serialized key size = -1, serialized value size = 24, headers = RecordHeaders(headers = [], isReadOnly = false), key = null, value = Hello Kafka, I'mW0111267) org.springframework.kafka.listener.ListenerExecutionFailedException: invokeHandler Failed; nested exception is java.lang.IllegalStateException: No Acknowledgment available as an argument, the listener container must have a MANUAL Ackmode to populate the Acknowledgment.; nested exception is java.lang.IllegalStateException: No Acknowledgment available as an argument, the listener container must have a MANUAL Ackmode to populate the Acknowledgment. at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.decorateException(KafkaMessageListenerContainer.java:1374) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeErrorHandler(KafkaMessageListenerContainer.java:1363) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeRecordListener(KafkaMessageListenerContainer.java:1276) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeWithRecords(KafkaMessageListenerContainer.java:1247) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeRecordListener(KafkaMessageListenerContainer.java:1161) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeListener(KafkaMessageListenerContainer.java:970) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.pollAndInvoke(KafkaMessageListenerContainer.java:774) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.run(KafkaMessageListenerContainer.java:707) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_362-362] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_362-362] at java.lang.Thread.run(Thread.java:750) [na:1.8.0_362-362] Caused by: java.lang.IllegalStateException: No Acknowledgment available as an argument, the listener container must have a MANUAL Ackmode to populate the Acknowledgment. at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:288) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:79) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:50) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeOnMessage(KafkaMessageListenerContainer.java:1325) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeOnMessage(KafkaMessageListenerContainer.java:1306) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeRecordListener(KafkaMessageListenerContainer.java:1266) [spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] ... 8 common frames omitted Caused by: org.springframework.messaging.converter.MessageConversionException: Cannot convert from [java.lang.String] to [org.springframework.kafka.support.Acknowledgment] for GenericMessage [payload=Hello Kafka, I'mW0111267, headers={kafka_offset=3, kafka_consumer=org.apache.kafka.clients.consumer.KafkaConsumer@6f24d4, kafka_timestampType=CREATE_TIME, kafka_receivedMessageKey=null, kafka_receivedPartitionId=0, kafka_receivedTopic=test-topic, kafka_receivedTimestamp=1756984997884}] at org.springframework.messaging.handler.annotation.support.PayloadArgumentResolver.resolveArgument(PayloadArgumentResolver.java:144) ~[spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE] at org.springframework.kafka.annotation.KafkaListenerAnnotationBeanPostProcessor$KafkaHandlerMethodFactoryAdapter$1.resolveArgument(KafkaListenerAnnotationBeanPostProcessor.java:837) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:117) ~[spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE] at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:148) ~[spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE] at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:116) ~[spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE] at org.springframework.kafka.listener.adapter.HandlerAdapter.invoke(HandlerAdapter.java:48) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:283) ~[spring-kafka-2.2.13.RELEASE.jar:2.2.13.RELEASE] ... 13 common frames omitted
09-05
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值