【问题标题】:how to compress data in producers when using spring kafka使用spring kafka时如何在生产者中压缩数据
【发布时间】:2020-02-05 05:07:30
【问题描述】:

我目前正在使用这样的 spring-kafka 发送数据:

val json = objectWriter.writeValueAsString(obj)
kafkaTemplate.send(topic, json)

如何告诉 KafkaTemplate 在发送前使用 snappy 压缩 json?

【问题讨论】:

    标签: java spring kotlin apache-kafka spring-kafka


    【解决方案1】:

    在 apache kafka 中有生产者配置 compression.type 具有有效值

    生产者生成的所有数据的压缩类型。默认值为无(即不压缩)。 有效值为 none、gzip、snappy、lz4 或 zstd

    所以你可以在生产者配置中设置

    ProducerConfig.COMPRESSION_TYPE_CONFIG "snappy"
    

    或通过使用属性

    spring.kafka.producer.compression-type= # Compression type for all data generated by the producer.
    

    【讨论】:

    • 这个配置去哪里了?在 application.properties 中??
    • 你可以添加到application.properties如果你启用自动配置,显示配置@pdeva
    • 我明白了。 ProducerConfig.COMPRESSION_TYPE_CONFIG 怎么样(如果我不想使用 application.properties)。显然这是要在java代码中添加的,但是在哪里?
    【解决方案2】:

    1.) 代理级别的压缩。

    您可以在命令末尾使用--config compression.type=gzip 启动您的zookeeper 服务器,也可以在zookeeper 配置文件中添加此属性。

    2.) 生产者级别的压缩

    在生产者的 config/producer.properties 中设置属性 compression.type = gzip 或使用以下属性启动生产者

    --compression-codec 'gzip'、'snappy'、'lz4' 或 'zstd'。
    如果指定没有值,那么它
    默认为“gzip”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-15
      • 1970-01-01
      • 2021-03-05
      • 2019-05-09
      • 1970-01-01
      • 2020-10-31
      • 2021-09-22
      • 1970-01-01
      相关资源
      最近更新 更多