首页 > 解决方案 > 卡夫卡压缩,如何将其限制为一些列出的主题?如何使用客户端生成 API 使用压缩的主题属性?

问题描述

我已经从客户端的生产者 API 启用了 kafka 消息压缩,例如:

configProperties.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, "gzip")

它运作良好,但是如果我们想将上述压缩限制为某些列出的主题,我们注意到一种方法:

configProperties.put("compressed.topics", "topicA,topicB")

从这个链接: https ://cwiki.apache.org/confluence/display/KAFKA/Compression 。但它不起作用,这意味着在我的测试用例中我启用了压缩并且我没有在compressed.topics 的参数中列出我的主题。仍然应用了压缩。请帮忙。

标签: apache-kafkacompression

解决方案


压缩由 Kafka 中的几个参数处理:

  • 在代理上,compression.type为整个集群配置默认值。它允许值gzipsnappylz4或。前三个是不言自明的,它们只是不同的压缩方法(snappy/lz4 是推荐的),是不言自明的,默认的,基本上只是使用生产者决定使用的任何压缩(或不使用) . 在这种情况下,Kafka 只是将消息视为字节数组,而不会尝试对其进行解码。uncompressedproduceruncompressedproducer
  • 在代理上的主题级别,您还可以指定与上述相同的配置,gzip, snappy, lz4,uncompresssedproducer。它们完全相同,但专门针对您设置它们的主题充当覆盖。
  • 在生产者方面,在代码中,您还可以设置compression.type, 可能的值为gzip、和snappy,其中最后一个是默认值。lz4none

您应该查看最近的 Kakfa 文档。您没有指定您使用的是哪个 Kafka 版本,但假设是最近的版本,我会查看这些文档:

https://kafka.apache.org/20/documentation.html

在那些中,没有提到compression.topics作为配置选项。因此,就像提到的@cricket_007 一样,这是一个您不应该使用的过时/陈旧的 wiki 页面。


推荐阅读