Apache kafka Kafka Spring云流批处理消耗-无法将类强制转换为消息
在Spring Cloud Stream批处理模式下使用KafkAvroSerialized消息时出现以下错误消息。这是早期在非批处理模式下可以正常工作的 下面是将现有应用程序转换为批处理模式所做的两项更改-Apache kafka Kafka Spring云流批处理消耗-无法将类强制转换为消息,apache-kafka,spring-kafka,spring-cloud-stream,Apache Kafka,Spring Kafka,Spring Cloud Stream,在Spring Cloud Stream批处理模式下使用KafkAvroSerialized消息时出现以下错误消息。这是早期在非批处理模式下可以正常工作的 下面是将现有应用程序转换为批处理模式所做的两项更改- 在application.yml启用的属性批处理模式中:true 2)修改了列表的参数,该参数以前是一条消息 错误消息:org.springframework.messaging.MessageException:调用MyConsumer#consume[1 args]时引发异常;嵌套异常
错误消息:org.springframework.messaging.MessageException:调用MyConsumer#consume[1 args]时引发异常;嵌套异常为java.lang.ClassCastException:SomeClass不能强制转换为org.springframework.messaging.Message
请帮助解决此问题。我已成功以批处理模式获取标题,但它们已包装在列表中 如果需要访问元数据和其他标题,则不能使用@StreamListener,需要使用函数式编程方法编写使用者函数,例如:
@Bean
Consumer<Message<List<String>>> input() {
return list -> {
System.out.println(list);
};
}
参考:
我注意到的区别是,以前在非批处理模式下,我使用kafka头接收GenericMessage,但在批处理模式下,我直接接收没有kafka头的有效负载。我发现@StreamListener不能使用批处理模式。我指的是这里提到的例子。但是,我不确定Spring如何知道在同一应用程序中多个绑定消耗多个主题时调用哪个方法。但我面临的唯一问题是我失去了卡夫卡的头球。我直接得到的是有效载荷,不再是一般信息。我面临着类似的问题,你的解决方案有效吗?
spring:
profiles: dev
cloud:
stream:
function:
definition: input
bindings:
input-in-0:
destination: yourDestination
group: yourGroup