![](/img/trans.png)
[英]Spring cloud Kafka streams Deserialiation issue wtih Caused by: java.lang.ClassCastException: ClassName cannot be cast to ClassName
[英]ClassCastException with Spring Cloud and Kafka Streams
我正在啟動一個新的 SB 應用程序,它將充當 Kafka 的消費者,並且我開始使用 Kafka Streams,但是在啟動應用程序時出現以下異常
java.lang.ClassCastException: class com.sun.proxy.$Proxy101 cannot be cast to class org.springframework.messaging.MessageChannel (com.sun.proxy.$Proxy101 and org.springframework.messaging.MessageChannel are in unnamed module of loader 'app') at org.springframework.cloud.stream.binder.AbstractMessageChannelBinder.doBindConsumer(AbstractMessageChannelBinder.java:91) ~[spring-cloud-stream-3.1.2.jar:3.1.2] at org.springframework.cloud. stream.binder.AbstractBinder.bindConsumer(AbstractBinder.java:143) ~[spring-cloud-stream-3.1.2.jar:3.1.2] at org.springframework.cloud.stream.binding.BindingService.lambda$rescheduleConsumerBinding$1( BindingService.Z93F725A07423FE1C889F448B 33D21F46Z:201) ~[spring-cloud-stream-3.1.2.jar:3.1.2] at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-5.3.5 .jar:5.3.5] at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[na:na] at java.base/java.util.concurrent.FutureTask.run (FutureTask.java:264) ~[na:na] at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na] at java.base/java.util .concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na] 在 java.base/java.util。 concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:an]
這就是我聲明 KStream 的方式,它計算一個單詞的發送次數:
@Bean
public Consumer<KStream<Bytes, String>> target() {
return input -> input.flatMapValues(value -> Arrays.asList(value.toLowerCase().split("\\W+")))
.map((key, value) -> new KeyValue<>(value, value))
.groupByKey(Grouped.with(Serdes.String(), Serdes.String()))
.windowedBy(TimeWindows.of(Duration.ofMillis(30000))).count(Materialized.as("words-count"))
.toStream().map((key, value) -> new KeyValue<>(null, new WordCount(key.key(), value,
new Date(key.window().start()), new Date(key.window().end()))));
}
使用相同的 application.yml 並有一個消費者 function 只接收這樣的消息
@Bean
public Consumer<Message<String>> target() {
return message -> {
System.out.println("******************");
System.out.println("Received message from source: " + message.getPayload());
};
}
一切正常。
我正在使用以下版本:
我在單元測試期間看到過其他帶有此錯誤的帖子,但我什至還沒有進行任何 Junit 測試。
任何幫助將不勝感激
看起來您在類路徑中沒有 Kafka Streams 活頁夾,但有消息通道活頁夾。 確保你在類路徑上有依賴spring-cloud-stream-binder-kakfa-streams
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.