KafkaProducer无法产生大于1 MB的主题消息

时间:2019-11-01 12:42:41

标签: java spring apache-kafka spring-kafka kafka-producer-api

我正在使用kafka_2.11-2.2.1。我在server.properties中有以下设置。

message.max.bytes=20971520
replica.fetch.max.bytes=23068672

代码级别的生产者配置。

@Bean("serviceKafkaTemplate")
public KafkaTemplate kafkaTemplate(@Autowired final ProducerFactory producerFactory) {
    return new KafkaTemplate(producerFactory);
}

 @Bean
public ProducerFactory<String, Object> producerFactory() {
    return new DefaultKafkaProducerFactory(props());
}

 private Properties props() {
    Properties properties = new Properties();     
    properties.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, "gzip");
    properties.put(ProducerConfig.REQUEST_TIMEOUT_MS_CONFIG, 10000);
    properties.put(ProducerConfig.BATCH_SIZE_CONFIG, 1);
    properties.put(ProducerConfig.LINGER_MS_CONFIG, 1);
    properties.put(ProducerConfig.MAX_REQUEST_SIZE_CONFIG, 15728640);
    properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
    properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
    return properties;
}

@Autowired
private KafkaTemplate serviceKafkaTemplate;

serviceKafkaTemplate.send("topic_name", data);

我只说生产者而不是消费者。当我通过cmd检查偏移量时,偏移量不会增加,这意味着生产者未发送数据。我的数据大小小于1 MB,那么它正在工作,当前大小为1.75 MB。在kafka server.log文件中也没有与此相关的内容。如果我错过任何配置,请告诉我。

1 个答案:

答案 0 :(得分:4)

请看一下酒店

import "your generated swagger framework" extension Error { var code: Int { guard let err = self as? ErrorResponse else { return (self as NSError).code } switch err{ case ErrorResponse.error(let code, _, _): return code } } }

当前文档中的说明:

  

请求的最大大小(以字节为单位)。此设置将限制生产者将在单个请求中发送的记录批数,以避免发送大量请求。这实际上也是最大记录批次大小的上限。请注意,服务器对记录批大小有自己的上限,可能与此不同。

认为这应该对您有帮助。另请参阅文档。

Apache Kafka documentation - producer configs