I have a spring-boot and spring-cloud-stream based app which listens to kinesis using spring-cloud-stream-kinesis-binder. The version for different libs are as follows:
spring-boot : 3.3.5 spring-cloud.version : 2023.0.3 spring-cloud-stream-binder-kinesis : 4.0.4 spring-cloud-stream: 4.1.3
when I tried upgrading the spring boot version to 3.4.0, I get the following n error:
java.lang.NoSuchMethodError: 'org.springframework.integration.support.MessageBuilder org.springframework.integration.support.MessageBuilder.removeHeader(java.lang.String)'
when I tried the following , no error was thrown
spring-boot : 3.3.5 spring-cloud.version : 2024.0.0-RC1 spring-cloud-stream-binder-kinesis : 4.0.4 spring-cloud-stream: 4.2.0-RC1
however, when I tried the following combination , once again the same error was thrown
spring-boot : 3.4.0 spring-cloud.version : 2024.0.0-RC1 spring-cloud-stream-binder-kinesis : 4.0.4 spring-cloud-stream: 4.2.0-RC1
Comment From: wilkinsona
Thanks for the report but this is out of Spring Boot’s control and it will have to be addressed in Spring Cloud. Unfortunately, I can’t tell exactly where as you haven’t shared the full stack trace.
Comment From: ksanjeev9211
Thanks for the quick reply, here is the full stack trace:
Exception in thread "Consumer for [date-input-stream]-kinesis-consumer-1" java.lang.NoSuchMethodError: 'org.springframework.integration.support.MessageBuilder org.springframework.integration.support.MessageBuilder.removeHeader(java.lang.String)'
at org.springframework.cloud.stream.function.FunctionConfiguration.sanitize(FunctionConfiguration.java:395)
at org.springframework.cloud.stream.function.FunctionConfiguration$FunctionWrapper.apply(FunctionConfiguration.java:817)
at org.springframework.cloud.stream.function.FunctionConfiguration$FunctionToDestinationBinder$1.handleMessageInternal(FunctionConfiguration.java:657)
at org.springframework.integration.handler.AbstractMessageHandler.doHandleMessage(AbstractMessageHandler.java:105)
at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73)
at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:132)
at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:148)
at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:121)
at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:72)
at org.springframework.integration.channel.AbstractMessageChannel.sendInternal(AbstractMessageChannel.java:390)
at org.springframework.integration.channel.AbstractMessageChannel.sendWithMetrics(AbstractMessageChannel.java:361)
at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:331)
at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:304)
at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:187)
at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:166)
at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:47)
at org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:109)
at org.springframework.integration.endpoint.MessageProducerSupport.lambda$sendMessage$1(MessageProducerSupport.java:261)
at io.micrometer.observation.Observation.observe(Observation.java:499)
at org.springframework.integration.endpoint.MessageProducerSupport.sendMessage(MessageProducerSupport.java:261)
at org.springframework.integration.aws.inbound.kinesis.KinesisMessageDrivenChannelAdapter.access$1800(KinesisMessageDrivenChannelAdapter.java:107)
at org.springframework.integration.aws.inbound.kinesis.KinesisMessageDrivenChannelAdapter$ShardConsumer.performSend(KinesisMessageDrivenChannelAdapter.java:1365)
at org.springframework.integration.aws.inbound.kinesis.KinesisMessageDrivenChannelAdapter$ShardConsumer.processSingleRecord(KinesisMessageDrivenChannelAdapter.java:1274)
at org.springframework.integration.aws.inbound.kinesis.KinesisMessageDrivenChannelAdapter$ShardConsumer.processRecords(KinesisMessageDrivenChannelAdapter.java:1261)
at org.springframework.integration.aws.inbound.kinesis.KinesisMessageDrivenChannelAdapter$ShardConsumer.lambda$processTask$8(KinesisMessageDrivenChannelAdapter.java:1098)
at org.springframework.integration.aws.inbound.kinesis.KinesisMessageDrivenChannelAdapter$ConsumerInvoker.run(KinesisMessageDrivenChannelAdapter.java:1446)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
Comment From: ksanjeev9211
I have just raised a similar issue with spring-cloud-stream
https://github.com/spring-cloud/spring-cloud-stream/issues/3048