记一次Kakfa消费者集群的生产事故

探讨Kafka消费者集群从自动提交改为手动提交后遇到的问题及解决方案,包括max.poll.interval.ms参数调整、分区拉取阈值设定及消息处理优化。

由于项目业务需要,在之前的Kafka Consumer集群的自动提交设置为手动提交,先介绍一下怎么设置为手动提交。

设置手动提交

consumer

@Component
public class KafkaConsumer {

    @Autowired
    private CustomConfig customConfig;

    @Autowired
    private StatsDClient statsDClient;

    @Value("${spring.kafka.bootstrap-servers}")
    private String kafkaBootstrapServer;

    @Value("${spring.kafka.sfc-bootstrap-servers}")
    private String kafkaSfcServer;

    @Value("${spring.kafka.consumer.group-id}")
    private String kafkaGroupId;

    @Autowired
    private GPSKafkaConfig gpsKafkaConfig;

    @Value("${spring.kafka.consumer.enable-auto-commit}")
    private Boolean autoCommit;

    @Value("${spring.kafka.consumer.auto-commit-interval}")
    private Integer autoCommitMs;


    @Value("${spring.kafka.listener.ack-count}")
    private Integer ackCount;

    @Value("${spring.kafka.listener.ack-time}")
    private Integer ackTime;



    private Map<String, Object> initProps() {
        Map<String, Object> props = new HashMap<>();
        
        // kafka的ip地址
        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaBootstrapServer);

        props.put(ConsumerConfig.GROUP_ID_CONFIG, kafkaGroupId);
        props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, autoCommit);
        props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, autoCommitMs);

        props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, gpsKafkaConfig.getSessionTimeoutMs());
        props.put(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, gpsKafkaConfig.getMaxPollIntervalMs());

        props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, gpsKafkaConfig.getMaxPollRecords());
        props.put(ConsumerConfig.FETCH_MIN_BYTES_CONFIG, gpsKafkaConfig.getFetchMinBytes());
        props.put(ConsumerConfig.FETCH_MAX_WAIT_MS_CONFIG, gpsKafkaConfig.getFetchMaxWaitMs());

        props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
        props.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值