kafka 通过代码对队列进行操作

String bootstrapServers = "192.163.0.1:9092";

    KafkaAdmin kafkaAdmin;
    AdminClient adminClient;
    /**
     * 项目启动调用或者通过@Bean注入
     */
    public void createKafkaAdmin(){
        Map<String, Object> props = new HashMap<>();
        props.put("bootstrap.servers", bootstrapServers);
        props.put("client.id","admin-001");
        kafkaAdmin = new KafkaAdmin(props);
        kafkaAdmin.setAutoCreate(true);
        adminClient = AdminClient.create(kafkaAdmin.getConfigurationProperties());
    }

    /**
     * 获取kafka中所有的topic名称
     * @return
     */
    public List<String> getAllTopic(){
        ListTopicsResult topicList = adminClient.listTopics();
        KafkaFuture<Set<String>> kafkaFuture = topicList.names();
        Set<String> topicSet = kafkaFuture.get();
        topicSet.stream().forEach(e->{
            System.err.println("kafka:【"+bootstrapServers+"】存在topic:【"+e"】");
        });
        return CollectionUtil.newArrayList(topicSet.iterator());
    }

    /**
     * 创建topic
     */
    public void createTopic(String topicName){
        try {
            //9 -> 分区数量 3->节点数量
            NewTopic newTopic = new NewTopic(topicName,9,(short)3);
            List<NewTopic> newTopics = new ArrayList<>();
            newTopics.add(newTopic);
            CreateTopicsResult createResult = adminClient.createTopics(newTopics);
            createResult.all().get();
            System.err.println("kafka创建topic:【"+topicName+"】成功");
        } catch (Exception e) {
            System.err.println("kafka创建topic:【"+topicName+"】失败");
            e.printStackTrace();
        }
    }

 

posted @ 2022-10-05 11:23  雨梦大木  阅读(55)  评论(0编辑  收藏  举报