亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何讓Kafka消費者從特定主題分區讀取Spring Boot

如何讓Kafka消費者從特定主題分區讀取Spring Boot

飲歌長嘯 2023-11-10 16:13:36
我對 Kafka 和 Spring Boot 有點陌生,并試圖讓我的應用程序從主題的特定分區讀取數據。 @KafkaListener(id = "singleLnr", groupId = "${kafka.consumer.group.id}",containerFactory = "singleFactory", topicPartitions = @TopicPartition(topic = "${kafka.topic.singleAttendance}", partitions = {"0"}))public void consume2(ConsumerRecord attendanceInfo) {    System.out.println(attendanceInfo);}單一工廠代碼@Bean(name = "singleFactory")public KafkaListenerContainerFactory singleFactory() {    ConcurrentKafkaListenerContainerFactory<String, Map<String, String>> factory = new ConcurrentKafkaListenerContainerFactory<>();    factory.setConsumerFactory(consumerFactory());    factory.setBatchListener(false);    factory.setMessageConverter(converter());    return factory;}這也是我的消費者工廠配置 @Bean(name = "consumerFactory")public ConsumerFactory<String, Map<String, String>> consumerFactory() {    Map<String, Object> props = new HashMap<>();    props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaBootstrapAddress);    props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, true);    props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, 1000);    props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, 60000);    props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);    props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);    props.put(ConsumerConfig.GROUP_ID_CONFIG, kafkaConsumerGroupId);    return new DefaultKafkaConsumerFactory<>(props);}當我嘗試運行該程序時,它給了我一個錯誤分區 single.attendance-0 偏移量 308 處的偏移量提交失敗:協調器不知道此成員。和警告失?。禾峤粺o法完成,因為組已經重新平衡并將分區分配給另一個成員。這意味著后續調用 poll() 之間的時間比配置的 max.poll.interval.ms 長,這通常意味著 poll 循環花費了太多時間處理消息。您可以通過增加 max.poll.interval.ms 或通過使用 max.poll.records 減少 poll() 中返回的批次的最大大小來解決此問題。如何讓我的消費者從特定分區讀取數據?您能至少給一個提示嗎?
查看完整描述

1 回答

?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

Kafka 為每個分區單獨分配消費者。本實現中無需在@KafkaListener中進行配置。

@KafkaListener(id = "singleLnr", groupId = "${kafka.consumer.group.id}",containerFactory = "singleFactory", topics = "${kafka.topic.singleAttendance}")
    public void consume2(ConsumerRecord attendanceInfo) {
        System.out.println(attendanceInfo);
    }


查看完整回答
反對 回復 2023-11-10
  • 1 回答
  • 0 關注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號