kafka自定义配置信息踩坑

org.apache.kafka.common.config.ConfigException: Invalid value 0 for configuration acks: Expected value to be a string, but it was a java.lang.Integer

场景描述:

单个kafka使用springboot框架自带的 yml 配置完全OK(因为底层会帮我们处理好类型)

但是我用到了多个kafka,并且kafka的信息都是从远端获取的,那么我创建消费者和创建生产者都是动态的,但是当我使用其中一个生产者发送消息的时候爆出上述错误;

根本原因 acks的配置值希望是 string,但是我写的是integer

源码解释一下:

getstring

测试一下发现会报错:

修改后:

java 复制代码
    /**
     * 构造生产者配置
     * @param ip
     * @param port
     * @return
     */
    private Map<String, Object> buildDefaultKafkaProducerMap(String ip, Integer port) {
        Map<String, Object> propertiesMap = new HashMap<>();
        propertiesMap.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, ip + ":" + port);
        propertiesMap.put(ProducerConfig.RETRIES_CONFIG, 0);
        propertiesMap.put(ProducerConfig.BATCH_SIZE_CONFIG, 20960);//单独批次发送数据量
        propertiesMap.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, ByteArraySerializer.class.getName());
        propertiesMap.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, ByteArraySerializer.class.getName());
        propertiesMap.put(ProducerConfig.ACKS_CONFIG, "0");
        propertiesMap.put(ProducerConfig.BUFFER_MEMORY_CONFIG, 67108864);//发送数据缓存
        propertiesMap.put(ProducerConfig.LINGER_MS_CONFIG, 10);//超过10ms未发送则强制发送
        return propertiesMap;
    }

    /**
     * 构造消费者配置
     * @param ip
     * @param port
     * @return
     */
    private Map<String, Object> buildDefaultKafkaConsumerMap(String ip, Integer port) {
        Map<String, Object> propertiesMap = new HashMap<>();
        propertiesMap.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, ip + ":" + port);
        //earliest:如果消费者组没有已提交的偏移量(即新的消费者组),则从主题的最早消息开始消费
        //latest:如果消费者组没有已提交的偏移量,则从最新的消息开始消费(即从消费者启动之后生成的消息)
        propertiesMap.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, consumerAutoOffsetReset);
        //propertiesMap.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, 20);//自动提交时间间隔
        propertiesMap.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);//不自动提交偏移量 手动提交
        propertiesMap.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, ByteArrayDeserializer.class.getName());
        propertiesMap.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, ByteArrayDeserializer.class.getName());
        propertiesMap.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, 60000);//在时间内没有收到心跳,则该消费者会被剔除组
        propertiesMap.put(ConsumerConfig.GROUP_ID_CONFIG, consumerGroupId);
        propertiesMap.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, 50);//单次拉取50条数据
        return propertiesMap;
    }
相关推荐
yumgpkpm1 小时前
腾讯云TBDS与CDH迁移常见问题有哪些?建议由CDH迁移到CMP 7.13 平台(类Cloudera CDP,如华为鲲鹏 ARM 版)
hive·hadoop·zookeeper·flink·spark·kafka·hbase
2501_941142137 小时前
基于 Kotlin 构建移动端高并发后台服务与实时数据同步系统的架构设计与工程实践分享
kafka
yumgpkpm1 天前
数据可视化AI、BI工具,开源适配 Cloudera CMP 7.3(或类 CDP 的 CMP 7.13 平台,如华为鲲鹏 ARM 版)值得推荐?
人工智能·hive·hadoop·信息可视化·kafka·开源·hbase
Zhao·o1 天前
KafkaMQ采集指标日志
运维·中间件·kafka
青靴1 天前
轻量级 CI/CD 实战(三):Kafka消费者Docker容器化部署
分布式·docker·kafka
galaxyffang1 天前
RocketMQ 为什么性能不如 Kafka?
分布式·kafka·rocketmq
2501_941881401 天前
ClickHouse OLAP 数据仓库在互联网大规模分析场景下性能优化与查询加速实践经验分享
kafka
一叶飘零_sweeeet1 天前
从 Kafka 到 RocketMQ:迁移实战全攻略
分布式·kafka·rocketmq
2501_941146322 天前
Java高性能微服务架构与Spring Boot实践分享:服务设计与性能优化经验
kafka
熊猫钓鱼>_>2 天前
数据处理的艺术:从Kafka到实时流处理平台的技术深度剖析
分布式·flink·kafka·数据治理·状态管理·管道·数据工程师