ApacheKafka streams连接:java.lang.ClassCastException:位于org.Apache.Kafka.streams.state.StateSerdes.valueFrom(StateSerdes.java:160)
我正在尝试执行卡夫卡流连接。我有两条客户和订单流。代码段如下所示:ApacheKafka streams连接:java.lang.ClassCastException:位于org.Apache.Kafka.streams.state.StateSerdes.valueFrom(StateSerdes.java:160),java,apache-kafka,apache-kafka-streams,Java,Apache Kafka,Apache Kafka Streams,我正在尝试执行卡夫卡流连接。我有两条客户和订单流。代码段如下所示: final String customerTopic = Constants.CUSTOMER_TOPIC; final String orderTopic = Constants.ORDER_TOPIC; Serde<Customer> customerSerde = Serdes.serdeFrom(new CustomerSerializer(), new CustomerDeseri
final String customerTopic = Constants.CUSTOMER_TOPIC;
final String orderTopic = Constants.ORDER_TOPIC;
Serde<Customer> customerSerde = Serdes.serdeFrom(new CustomerSerializer(), new CustomerDeserializer());
Serde<Order> orderSerde = Serdes.serdeFrom(new OrderSerializer(), new OrderDeserializer());
Serde<Long> longSerde = Serdes.Long();
KStream<Long, Customer> customerStream = builder.stream(customerTopic, Consumed.with(longSerde, customerSerde));
KStream<Long, Order> orderStream = builder.stream(orderTopic, Consumed.with(longSerde, orderSerde))
.selectKey((k, v) -> v.getCustomerId());
KStream<Long, CustomerOrder> joinedStream = orderStream.join(customerStream,
(order, customer) -> new CustomerOrder(customer, order), JoinWindows.of(Duration.ofSeconds(120)),
Joined.with(longSerde, orderSerde, customerSerde));
在反序列化方法中记录消息如何?根据错误,您使用了来自某些客户数据的订单,这些客户数据使用相同的application.id进行不同的联接。为每个联接使用唯一的application.id来解决此问题。在反序列化方法中记录消息如何?根据错误,您使用了来自某些客户数据的订单,这些客户数据使用相同的application.id进行不同的联接。为每个联接使用唯一的application.id来解决问题。
java.lang.ClassCastException: poc.kafka.domain.Order cannot be cast to poc.kafka.domain.Customer
at poc.kafka.domain.serialization.CustomerDeserializer.deserialize(CustomerDeserializer.java:12)
at poc.kafka.domain.serialization.CustomerDeserializer.deserialize(CustomerDeserializer.java:1)
at org.apache.kafka.streams.state.StateSerdes.valueFrom(StateSerdes.java:160)
at org.apache.kafka.streams.state.internals.MeteredWindowStoreIterator.next(MeteredWindowStoreIterator.java:56)
at org.apache.kafka.streams.state.internals.MeteredWindowStoreIterator.next(MeteredWindowStoreIterator.java:26)
at org.apache.kafka.streams.kstream.internals.KStreamKStreamJoin$KStreamKStreamJoinProcessor.process(KStreamKStreamJoin.java:97)
at org.apache.kafka.streams.processor.internals.ProcessorNode.process(ProcessorNode.java:117)
at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:201)
at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:180)
at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:133)
at org.apache.kafka.streams.kstream.internals.KStreamJoinWindow$KStreamJoinWindowProcessor.process(KStreamJoinWindow.java:55)
at org.apache.kafka.streams.processor.internals.ProcessorNode.process(ProcessorNode.java:117)
at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:201)
at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:180)
at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:133)
at org.apache.kafka.streams.processor.internals.SourceNode.process(SourceNode.java:87)
at org.apache.kafka.streams.processor.internals.StreamTask.process(StreamTask.java:366)
at org.apache.kafka.streams.processor.internals.AssignedStreamsTasks.process(AssignedStreamsTasks.java:199)
at org.apache.kafka.streams.processor.internals.TaskManager.process(TaskManager.java:420)
at org.apache.kafka.streams.processor.internals.StreamThread.runOnce(StreamThread.java:890)
at org.apache.kafka.streams.processor.internals.StreamThread.runLoop(StreamThread.java:805)
at org.apache.kafka.streams.processor.internals.StreamThread.run(StreamThread.java:774)