Kafka(一)

285 阅读1分钟

Kafka客户端API类型

 AdminClient API:允许管理和检测Topic、broker以及其他kafka对象

 ProducerAPI:发布消息到一个或多个topic

 Consumer API:订阅一个或多个topic,并处理产生的消息

 Streams API:  高效地将输入流转换到输出流

 Connectors API: 从一些源系统或应用程序中拉取数据到Kafka

AdminClient API demo

<dependency>   
 <groupId>org.apache.kafka</groupId>   
 <artifactId>kafka-clients</artifactId>   
 <version>2.4.0</version>
</dependency>




 /**
     *
     * 设置AdminClient
     * @return
     */
    public static AdminClient adminClient(){
        //配置参数
        Properties properties = new Properties();
        properties.setProperty(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG,"192.168.75.128:9092");
        AdminClient adminClient = AdminClient.create(properties);
        return adminClient;
    }

创建成功

  /**
     * 创建topic实例
     */
    public static void createTopic(){
        AdminClient adminClient = adminClient();
        //副本因子
        Short rs = 1;
        NewTopic newTopic = new NewTopic(TOPIC_NAME,1,rs);
        CreateTopicsResult topics  = adminClient.createTopics(Arrays.asList(newTopic));
        System.out.println("CreateTopicResult:"+ topics);
    }

/**
     * 删除topic
     * @throws ExecutionException
     * @throws InterruptedException
     */
    public static void delTopics() throws ExecutionException, InterruptedException {
        AdminClient adminClient = adminClient();
        DeleteTopicsResult deleteTopicsResult = adminClient.deleteTopics(Arrays.asList(TOPIC_NAME));
        deleteTopicsResult.all().get();
    }

  /**
     * 描述Topic
     * name:csx_topic,desc:(name=csx_topic, internal=false,
     * partitions=
     * (partition=0, leader=192.168.75.128:9092 (id: 0 rack: null), replicas=192.168.75.128:9092 (id: 0 rack: null), isr=192.168.75.128:9092 (id: 0 rack: null)), authorizedOperations=[])
     */
    public static  void describeTopics() throws ExecutionException, InterruptedException {
        AdminClient adminClient = adminClient();
        DescribeTopicsResult describeTopicsResult = adminClient.describeTopics(Arrays.asList(TOPIC_NAME));
        Map<String, TopicDescription> stringTopicDescriptionMap = describeTopicsResult.all().get();
        Set<Map.Entry<String,TopicDescription>> entries = stringTopicDescriptionMap.entrySet();
        entries.stream().forEach((entry) ->{
            System.out.println("name:" + entry.getKey() + ",desc:" + entry.getValue());
        });
    }