当产生的消息是消费者没有引用的模型类型时,如何反序列化消费者中的消息?

人气:671 发布:2022-10-16 标签: spring-kafka spring-cloud-stream

问题描述

我正在尝试反序列化从Conumers作用域之外的服务生成的消息。 如果序列化/反序列化模型包不同,则Kafka模型不在受信任的包中。会出现错误

所以我想我有两个选择。或者以json/字符串的形式生成消息,或者让消费者包含生产者库并使用相同的模型来反序列化消息。

我想在消费者中反序列化时手动忽略消息的标头类型,但我未能做到这一点。有没有办法做到这一点,或者我是否坚持使用上述两个选项?

推荐答案

您需要将默认类型配置为使用者的版本,并将JsonDeserializer.USE_TYPE_INFO_HEADERS设置为False。

或者,您需要提供类型映射https://docs.spring.io/spring-kafka/docs/current/reference/html/#serdes-mapping-types

请参阅此答案以获取示例:How to map types using properties file in Kafka

803