Kafka压缩,如何将其限制为列出的某些主题?如何使用客户端产生的API使用Compressed.topics属性?

时间:2018-11-13 13:38:01

标签: apache-kafka compression

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

configProperties.put(ProducerConfig.COMPRESSION_TYPE_CONFIG,“ gzip”)

效果很好,但是,如果我们想将上述压缩限制为某些列出的主题,我们会发现一种方法:

configProperties.put(“ compressed.topics”,“ topicA,topicB”)

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

1 个答案:

答案 0 :(得分:1)

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

  • 在代理上,compression.type为整个群集配置默认值。它允许值gzipsnappylz4uncompressedproducer。前三个是不言自明的,它们只是不同的压缩方法(建议使用snappy / lz4),uncompressed是不言自明的,默认的producer基本上是使用任何压缩方法压缩(或不压缩)生产者决定使用。在这种情况下,Kafka只会将消息视为字节数组,而不会尝试对其进行解码。
  • 在代理上的主题级别,您还可以指定与上述相同的配置,gzipsnappylz4uncompresssedproducer 。它们是完全一样的,但是专门用作您设置它们的主题的替代
  • 在生产者端,还可以在代码中设置compression.type,可能的值为gzipsnappylz4none,最后一个是默认位置。

您应该查看Kakfa的最新文档。您没有指定您使用的是哪个Kafka版本,但是假设是最新版本,我将查看以下文档:

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

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