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 (将#修改为@)