![](/img/trans.png)
[英]Spring boot kafka set ackOnError in application.properties
[英]Spring Boot with Kafka Streams throws ClassCastException only when set configuration in application.properties
我在使用 Kafka Streams 啟動 Spring 時遇到問題。
有兩種方法可以設置配置 Kafka Streams。
第一種方法是像這樣使用@Bean 設置配置。
@Bean(name = KafkaStreamsDefaultConfiguration.DEFAULT_STREAMS_CONFIG_BEAN_NAME)
KafkaStreamsConfiguration kStreamsConfig() {
Map<String, Object> props = new HashMap<>();
props.put(APPLICATION_ID_CONFIG, "kafka-streams");
props.put(BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
return new KafkaStreamsConfiguration(props);
}
當我使用這種方式並在 k8s 上部署應用程序時,它運行良好並且不會拋出任何異常。
但是,在第二種方式中使用 application.properties 這樣
// application.properties
spring.kafka.streams.bootstrap-servers=localhost:9092
spring.kafka.streams.application-id=kafka-streams
當我在 k8s 上以這種方式部署應用程序時,應用程序也運行良好,但拋出 ClassCastException!
20220728 18:08:17 [XTRA-KAFKA-PRPDUCER11 main] class java.util.ArrayList cannot be cast to class java.lang.String (java.util.ArrayList and java.lang.String are in module java.base of loader 'bootstrap') java.lang.ClassCastException: class java.util.ArrayList cannot be cast to class java.lang.String (java.util.ArrayList and java.lang.String are in module java.base of loader 'bootstrap')
java.lang.ClassCastException
org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:666)
org.apache.kafka.streams.processor.internals.DefaultKafkaClientSupplier.getRestoreConsumer(DefaultKafkaClientSupplier.java:49)
org.apache.kafka.streams.processor.internals.StreamThread.create(StreamThread.java:343)
org.apache.kafka.streams.KafkaStreams.createAndAddStreamThread(KafkaStreams.java:956)
org.apache.kafka.streams.KafkaStreams.<init>(KafkaStreams.java:948)
org.apache.kafka.streams.KafkaStreams.<init>(KafkaStreams.java:845)
org.apache.kafka.streams.KafkaStreams.<init>(KafkaStreams.java:751)
org.springframework.kafka.config.StreamsBuilderFactoryBean.start(StreamsBuilderFactoryBean.java:349)
org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178)
org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54)
org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356)
java.base/java.lang.Iterable.forEach(Iterable.java:75)
org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155)
org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123)
org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:935)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586)
org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734)
org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
org.springframework.boot.SpringApplication.run(SpringApplication.java:308)
org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
org.springframework.boot.SpringApplication.run(SpringApplication.java:1295)
com.example.springkafka.SpringKafkaApplication.main(SpringKafkaApplication.java:10)
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
java.base/java.lang.reflect.Method.invoke(Method.java:577)
org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65)
(引導服務器就是一個例子。在我的應用程序中,它不是 localhost:9092)
此外,在使用 IntelliJ 的本地環境中,兩種方式都沒有異常。
我想知道為什么會出現這個問題。 以及如何解決這個問題..
最后,我決定忽略這個異常。
因為,當拋出異常時,應用程序不會關閉或運行良好。
此外,在本地環境中,不會拋出異常。
我認為我的k8s有問題。
感謝所有評論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.