Kafka暂停分区并花费很长时间(10分钟)再次恢复分区

时间:2018-08-30 03:50:59

标签: apache-kafka kafka-consumer-api spring-kafka

我正在使用具有以下配置的spring kafka:

props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, 
environment.getProperty("kafka.url"));
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, 
StringDeserializer.class);
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, 
KafkaAvroDeserializer.class);
props.put("specific.avro.reader", true);
props.put("schema.registry.url", 
environment.getProperty("schema.registry.url"));
props.put("session.timeout.ms", 120000);
props.put("request.timeout.ms", 300000);
props.put("max.partition.fetch.bytes", "10240");
props.put("max.poll.interval.ms", 120000);
props.put("max.poll.records", 100);

还有

@Bean
public ConcurrentKafkaListenerContainerFactory<String, 
List<AlertNotificationPayload>> kafkaListenerContainerFactory() {
    ConcurrentKafkaListenerContainerFactory<String, 
List<AlertNotificationPayload>> factory = new 
ConcurrentKafkaListenerContainerFactory<>();
    factory.setConsumerFactory(consumerFactory());
    factory.setConcurrency(10);
}

一旦我启动服务器,使用者就开始使用消息,但是过了一会儿,一些分区被暂停,并且几乎在9-10分钟之内没有恢复。使用者线程中的处理时间以毫秒为单位,并且具有单独的线程进行处理。我尝试了多种配置组合,但是没有用。

我还尝试使用设置 factory.getContainerProperties()。setPauseEnabled(false); 停止暂停/继续操作,但重新平衡会在一段时间后开始发生,消费者早晚丧命,并且一段时间后,消费群体中没有消费者。

我正在使用以下版本:

<dependency>
        <groupId>org.springframework.kafka</groupId>
        <artifactId>spring-kafka</artifactId>
         <version>1.1.3.RELEASE</version> //tried latest one as well
</dependency>
<dependency>
        <groupId>io.confluent.maven</groupId>
        <artifactId>kafka-connect-quickstart</artifactId>
        <version>0.10.0.0</version>
</dependency>
<dependency>
        <groupId>io.confluent</groupId>
        <artifactId>kafka-avro-serializer</artifactId>
        <version>3.2.0</version>
</dependency>

请帮助。

0 个答案:

没有答案