首页 > 编程语言 >Apache Pulsar——Java API操作tenant、namespace、topic

Apache Pulsar——Java API操作tenant、namespace、topic

时间:2023-01-07 16:31:27浏览次数:52  
标签:Java String topics namespace topic my tenant pulsarAdmin

一、添加pom.xml依赖

<dependency>
	<groupId>org.apache.pulsar</groupId>
	<artifactId>pulsar-client</artifactId>
	<version>2.10.0</version>
</dependency>

二、tenant租户的Java API

public class PulsarTenant {


    public static void main(String[] args) throws PulsarClientException, PulsarAdminException {
        String serviceHttpUrl = "http://192.168.23.111:8080,192.168.23.112:8080,192.168.23.113:8080";

        // 1.创建pulsar的Admin管理对象
        PulsarAdmin pulsarAdmin = PulsarAdmin.builder().serviceHttpUrl(serviceHttpUrl).build();

        // 2.基于pulsar的Admin对象进行相关的操作

        // 2.1 创建租户
        Set<String> allowedClusters = new HashSet<>();
        allowedClusters.add("pulsar-cluster");
        TenantInfo tenantInfo = TenantInfo.builder().allowedClusters(allowedClusters).build();
        pulsarAdmin.tenants().createTenant("my-tenant", tenantInfo);

        // 2.2 查看当前有那些租户
        List<String> tenants = pulsarAdmin.tenants().getTenants();
        tenants.forEach(System.out::println);

        // 2.3 删除租户操作
        pulsarAdmin.tenants().deleteTenant("my-tenant");

        // 3.关闭管理对象
        pulsarAdmin.close();
    }
}

三、namespace命令空间的Java API

public class PulsarNamespace {

    public static void main(String[] args) throws PulsarAdminException, PulsarClientException {
        String serviceHttpUrl = "http://192.168.23.111:8080,192.168.23.112:8080,192.168.23.113:8080";

        // 1.创建pulsar的Admin管理对象
        PulsarAdmin pulsarAdmin = PulsarAdmin.builder().serviceHttpUrl(serviceHttpUrl).build();

        // 2.基于pulsar的Admin对象进行相关的操作

        // 2.1 创建名称空间
        String tenant = "my-tenant";
        String namespace = tenant + "/my-ns";
        pulsarAdmin.namespaces().createNamespace(namespace);

        // 2.2 获取租户下的名称空间列表
        List<String> namespaces = pulsarAdmin.namespaces().getNamespaces(tenant);
        namespaces.forEach(System.out::println);

        // 2.3 删除名称空间
        pulsarAdmin.namespaces().deleteNamespace(namespace);

        // 3.关闭管理对象
        pulsarAdmin.close();
    }
}

四、topic的Java API

public class PulsarTopic {

    public static void main(String[] args) throws PulsarClientException, PulsarAdminException {
        String serviceHttpUrl = "http://192.168.23.111:8080,192.168.23.112:8080,192.168.23.113:8080";

        // 1.创建pulsar的Admin管理对象
        PulsarAdmin pulsarAdmin = PulsarAdmin.builder().serviceHttpUrl(serviceHttpUrl).build();

        // 2.基于pulsar的Admin对象进行相关的操作

        // 2.1 创建topic相关操作: 有分区和没有分区, 以及持久化和非持久化
        String tenant = "my-tenant";
        String namespace = tenant + "/my-ns";
        String nonPartitionedTopicName = "non-persistent://my-tenant/my-ns/my-non-partitioned-topic";
        String partitionedTopicName = "persistent://my-tenant/my-ns/my-partitioned-topic";

        // 2.2 创建无分区的topic
        pulsarAdmin.topics().createNonPartitionedTopic(nonPartitionedTopicName);

        // 2.3 创建有分区的topic
        pulsarAdmin.topics().createPartitionedTopic(partitionedTopicName,3);

        // 2.4 修改有分区的Topic的分区数量
        pulsarAdmin.topics().updatePartitionedTopic(partitionedTopicName,6);

        // 2.5 查询当前有那些topic。如果一个topic有3个分区,则返回3个带-partition-N后缀的topic
        List<String> topics = pulsarAdmin.topics().getList(namespace);
        topics.forEach(System.out::println);

        // 2.6 查询当前有分区的topic列表
        List<String> partitionedTopicList = pulsarAdmin.topics().getPartitionedTopicList(namespace);
        partitionedTopicList.forEach(System.out::println);

        // 2.7 查询有分区的Topic,有多少个分区
        int partitions = pulsarAdmin.topics().getPartitionedTopicMetadata(partitionedTopicName).partitions;
        System.out.println(partitions);

        // 2.8 删除无分区的Topic
        pulsarAdmin.topics().delete(nonPartitionedTopicName);

        // 2.9 删除有分区的Topic
        pulsarAdmin.topics().deletePartitionedTopic(partitionedTopicName);


        // 3.关闭管理对象
        pulsarAdmin.close();
    }
}

标签:Java,String,topics,namespace,topic,my,tenant,pulsarAdmin
From: https://blog.51cto.com/u_14014612/5995542

相关文章

  • Java基础面试题(二)
    1、hashCode()相同,equals()也一定相同么不一定,同时反过来equals()为true,hashCode()也不一定相同。hashCode()返回该对象的哈希码值,equals()返回两个对象是否相等。关于......
  • 使用Java对稀疏数组的压缩与还原
    稀疏矩阵的压缩与还原稀疏数组中元素个数很少或者有大量的重复值,如果直接保存保存,会浪费很多空间,这时,就可以考虑对数组进行压缩存储。先定义一个稀疏数组//创建一个二维......
  • java8新特性LocalDateTime字符串转时间比较大小(5)
    importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;importjava.util......
  • java中创建线程的三种方法
    1)继承Thread类创建线程2)实现Runnable接口创建线程3)使用Callable和Future创建线程通过继承Thread类来创建并启动多线程的一般步骤如下1】d定义Thread类的子类,并重写该类的run......
  • java
    1包机制为了更好的组织类,Java提供了包机制,用于区别类名的命名空间包语句的语法格式为:packagepkg1[.pkg2[.pkg3...]];为了能够使用某一个包的成员,我们需要......
  • Java帝国的诞生
    Java帝国的诞生C&C++C:贴近硬件,运行极快,效率极高操作系统,编译器,数据库,网路系统等指针和内存管理C++:面向对象兼容C图形领域,游戏等Java语法有点......
  • was cut by GROUP_CONCAT(); nested exception is java.sql.SQLException
    ###Errorqueryingdatabase.Cause:java.sql.SQLException:Row28wascutbyGROUP_CONCAT()###Theerrormayexistinio/dataease/ext/ExtVAuthModelMapper.xm......
  • java编辑器IDEA软件的快捷键
    快速键入相关代码:main/psvm加回车可以直接调出main函数的框架,sout加回车可以直接调出System.out.println("");或者可以通过helloworld.sout直接键入System.out.println("h......
  • 解决java.lang.NullPointerException报错以及分析出现的几种原因
    1、字符串变量未初始化2、接口类型的对象没有用具体的类初始化,比如:Mapmap//会报错Mapmap=newMap();//则不会报错了3、当一个对象的值为空时,你没有判断为空的情......
  • 36_Java中的枚举
    Java中的枚举枚举概述​ 是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。举例:一周只有7天,一年只有12个月等​ 回想单列设计模式:单例类是一个......