package com.muyu.mqttmessage.consumer; import com.muyu.mqttmessage.common.Test; import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.clients.consumer.KafkaConsumer; import org.apache.kafka.common.TopicPartition; import org.apache.kafka.common.serialization.StringDeserializer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.kafka.core.ProducerFactory; import org.springframework.stereotype.Component; import java.time.Duration; import java.util.ArrayList; import java.util.List; import java.util.Properties; /** * @ClassName KafkaConsumers * @Description 描述 * @Author Xin.Yao * @Date 2024/6/9 上午9:54 */ @Component public class KafkaConsumers { @Value("${spring.kafka.bootstrap-servers}") private String bootstrapServers; public KafkaConsumer kafkaConsumer(Test test){ Properties properties = new Properties(); properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); // 指定分区策略 properties.put(ConsumerConfig.PARTITION_ASSIGNMENT_STRATEGY_CONFIG, "org.apache.kafka.clients.consumer.RoundRobinAssignor"); // 指定消费者组,必须参数 properties.put(ConsumerConfig.GROUP_ID_CONFIG, "test1"); KafkaConsumer consumer = new KafkaConsumer<>(properties); // 订阅主题分区 List topicPartitions = new ArrayList<>(); topicPartitions.add(new TopicPartition("testKafka", test.getPartitions())); consumer.assign(topicPartitions); return consumer; } }