微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Micronaut Kafka 客户端多个 SerDe

如何解决Micronaut Kafka 客户端多个 SerDe

目前正在尝试通过 Kafka 客户端在 Micronaut Kafka 中使用多个序列化器和反序列化器。 配置示例(application-test.yml):

kafka:
    consumers:
        consumer-x:
            value-deserializer: com.example.AvroDeserializer
            key-deserializer: com.example.Deserializer
        schema:
            registry.url: mock://example.com
            reflection: true
        record.packages. com.example.packages
        consumer-y: 
            value-deserializer: com.example.ByteArrayDeserializer
            key-deserializer: com.example.Deserializer
    producers:
        producer-x:
            value-serializer: com.example.AvroSerializer
            key-serializer: com.example.Serializer
        schema:
            registry.url: mock://example.com
            reflection: true
        record.packages. com.example.packages
        producer-y: 
            value-serializer: com.example.ByteArraySerializer
            key-serializer: com.example.Serializer

serde 值仅针对生产者/消费者 -y 而不是生产者/消费者 -x 设置。它认为: value.deserializer = class io.micronaut.configuration.kafka.serde.JsonSerde 当我使用以下配置时不会发生这种情况:

kafka:
    value:
        serializer: com.example.AvroSerializer
        deserializer: com.example.AvroDeserializer
    key:
        serializer: com.example.Serializer
        deserializer: com.example.Deserializer
  schema:
    registry.url: mock://example.com
    reflection: true
  record.packages: com.example.packages

有人知道为什么会这样吗?是模式注册表和记录包的缩进不对吗?

已尝试在不同级别添加架构数据,包括 kafka、消费者/生产者、特定组/客户、密钥。

还尝试使用camelCasing而不是用破折号分隔,即consumer-x到consumerX。

也试过使用

kafka:
    consumers:
       consumer-x:
           value:
               deserializer: com.example.AvroDeserializer

还尝试在消费者-x、消费者-y 前面使用“-”使其成为yml 中的列表。

很可能我遗漏了一个我没有测试过的组合,尽管必须有更好的方法来回答这个问题,而不是用尽所有可能的 yml 语法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。