首页
学习
活动
专区
圈层
工具
发布

CKafka系列学习文章 - 调用API接口管理主题(十三)

导语:通过调用API来管理CKafka主题信息,添加或删除主题白名单。

一、创建主题

1. 接口描述

接口请求域名:ckafka.api.qcloud.com 本接口(CreateTopic)用于在消息队列 CKafka 实例下创建主题。

2. 输入参数

以下请求参数列表仅列出了接口请求参数,其它参数见 公共请求参数 页面。

参数名称

必选

类型

描述

instanceId

是

String

实例 ID。

topicName

是

String

主题名称,是一个不超过64个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线-。

partitionNum

是

Int

Partition 个数,大于0。

replicaNum

是

Int

副本个数,不能多于 broker 数,最大为3。

note

否

String

主题备注,是一个不超过 64 个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线-。

enableWhiteList

否

Int

IP 白名单开关,1:打开 0:关闭,默认不打开。

ipWhiteList.n

否

String

IP 白名单列表,配额限制,enableWhileList=1 时必选。

cleanUpPolicy

否

String

清理日志策略,日志清理模式,默认为"delete"。"delete":日志按保存时间删除,"compact":日志按 key 压缩,"compact, delete":日志按 key 压缩且会按保存时间删除。

minInsyncReplicas

否

Int

默认为1。

uncleanLeaderElectionEnable

否

Int

默认为0。 0表示 false。 1表示 true。

retentionMs

否

Int

消息保留时间,单位:ms,当前最小值为60000ms。

segmentMs

否

Int

Segment 分片滚动的时长,单位:ms,当前最小为86400000ms。

3. java实现

代码语言:javascript
代码运行次数:0
复制

	/* 创建主题
	 * minInsyncReplicas和uncleanLeaderElectionEnable的解释和用处请看
	 * https://cloud.tencent.com/developer/article/1493804
	 *  */
   public static String CreateTopic(String nonce,String timestamp) {
    	
    	Map<String, Object> param = new HashMap<>();
        param.put("Action", "CreateTopic");
        param.put("Nonce", nonce);
        param.put("Timestamp",timestamp);
        param.put("SignatureMethod", signatureMethod);
        param.put("Region", "ap-guangzhou");
        param.put("SecretId", secretId);  
        param.put("instanceId",instanceId);//实例 ID
        param.put("topicName", "topic_jensen1");//主题名称
        param.put("partitionNum", 2);//Partition 个数,大于0
        param.put("replicaNum", 2);//副本个数,不能多于 broker 数,最大为3
        //选填项
        param.put("note","topic_Jensen1");//主题备注,是一个不超过 64 个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线-。
        param.put("enableWhiteList","1");//IP 白名单开关,1:打开, 0:关闭,默认不打开。
        param.put("ipWhiteList.0","10.1.1.250");//IP 白名单列表,配额限制,enableWhileList=1 时必选。
        param.put("cleanUpPolicy","delete");//清理日志策略,日志清理模式,默认为"delete"。1,"delete":日志按保存时间删除。2,"compact":日志按 key 压缩。3,"compact, delete":日志按 key 压缩且会按保存时间删除。
        param.put("minInsyncReplicas","1");//默认为1。
        param.put("uncleanLeaderElectionEnable","0");//默认为0。 0表示 false。 1表示 true。
        //param.put("retentionMs","");//消息保留时间,单位:ms,当前最小值为60000ms(1分钟)。
        //param.put("segmentMs","");//Segment 分片滚动的时长,单位:ms,当前最小为86400000ms(1天)。
    	return getResult(param,url);
    }  

4. 执行

代码语言:javascript
代码运行次数:0
复制
  //修改主题属性
  String result=SetTopicAttributes(nonce,timestamp);

5. 结果

执行前:

返回结果:{"code":0,"message":"","codeDesc":"Success","data":{"topicId":"topic-pc6bi41k"}}

执行后:

实例详情

二、修改主题属性

1. 接口描述

接口请求域名:ckafka.api.qcloud.com 本接口(SetTopicAttributes)用于在消息队列 CKafka 实例下修改主题属性。

2. 输入参数

以下请求参数列表仅列出了接口请求参数,其它参数见 公共请求参数 页面。

参数名称

必选

类型

描述

instanceId

是

String

实例 ID。

topicName

是

String

主题名称。

note

否

String

主题备注,是一个不超过64个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线-。

enableWhiteList

否

Int

IP 白名单开关,1:打开;0:关闭。

minInsyncReplicas

否

Int

默认为1。

uncleanLeaderElectionEnable

否

Int

默认为 0,0:false;1:true。

retentionMs

否

Int

消息保留时间,单位:ms,当前最小值为60000ms。

segmentMs

否

Int

Segment 分片滚动的时长,单位:ms,当前最小为86400000ms。

maxMessageBytes

否

Int

主题消息最大值,单位为 Byte,最大值为8388608Byte(即8MB)。

3. java实现

代码语言:javascript
代码运行次数:0
复制
	/* 修改主题属性 */
   public static String SetTopicAttributes(String nonce,String timestamp) {
    	
    	Map<String, Object> param = new HashMap<>();
    	//公共参数
        param.put("Action", "SetTopicAttributes");
        param.put("Nonce", nonce);
        param.put("Timestamp",timestamp);
        param.put("SignatureMethod", signatureMethod);
        param.put("Region", "ap-guangzhou");
        param.put("SecretId", secretId);
        //输入参数
        param.put("instanceId",instanceId);//实例 ID
        param.put("topicName", "topic_jensen1");//主题名称
        //选填项
        param.put("note","topic_jensen1");//主题备注,是一个不超过 64 个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线-。
        param.put("enableWhiteList","1");//IP 白名单开关,1:打开, 0:关闭,默认不打开。
        param.put("ipWhiteList.0","10.1.1.250");//IP 白名单列表,配额限制,enableWhileList=1 时必选。
        param.put("cleanUpPolicy","delete");//清理日志策略,日志清理模式,默认为"delete"。1,"delete":日志按保存时间删除。2,"compact":日志按 key 压缩。3,"compact, delete":日志按 key 压缩且会按保存时间删除。
        param.put("minInsyncReplicas","1");//默认为1。
        param.put("uncleanLeaderElectionEnable","0");//默认为0。 0表示 false。 1表示 true。
        param.put("retentionMs","60000");//消息保留时间,单位:ms,当前最小值为60000ms(1分钟)。
        param.put("segmentMs","86400000");//Segment 分片滚动的时长,单位:ms,当前最小为86400000ms(1天)。
        param.put("maxMessageBytes","1024");
    	return getResult(param,url);
    }

4. 执行

代码语言:javascript
代码运行次数:0
复制
    	//修改主题属性
    	String result=SetTopicAttributes(nonce,timestamp);

5. 结果

三、删除主题

1. 接口描述

接口请求域名:ckafka.api.qcloud.com。 本接口(DeleteTopic)用于在消息队列 CKafka 实例下删除主题。

2. 输入参数

以下请求参数列表仅列出了接口请求参数,其它参数见 公共请求参数 文档。

参数名称

必选

类型

描述

instanceId

是

String

实例 ID

topicName

是

String

主题名称

3. java实现

代码语言:javascript
代码运行次数:0
复制
	/* 删除主题 */
    public static String DeleteTopic(String nonce,String timestamp) {

    	Map<String, Object> param = new HashMap<>();
        param.put("Action", "DeleteTopic");
        param.put("Nonce", nonce);
        param.put("Timestamp",timestamp);
        param.put("SignatureMethod", signatureMethod);
        param.put("Region", "ap-guangzhou");
        param.put("SecretId", secretId);
        param.put("instanceId",instanceId);
        param.put("topicName", "bowenqiu_topic1");//主题名称 
    	return getResult(param,url);
    }

4. 执行

代码语言:javascript
代码运行次数:0
复制
    	//删除主题
    	String result=DeleteTopic(nonce,timestamp);

5. 结果

删除前

{"code":0,"message":"","codeDesc":"Success","data":[]}

四、增加分区

1. 接口描述

接口请求域名:ckafka.api.qcloud.com 本接口(AddPartition)用于在用户增加主题中的分区。

2. 输入参数

以下请求参数列表仅列出了接口请求参数,其它参数见 公共请求参数 文档。

参数名称

必选

类型

描述

instanceId

是

String

实例 ID

topicName

是

String

主题名称

partitionNum

是

Int

partition个数

3. java实现

代码语言:javascript
代码运行次数:0
复制
	/* 修改主题属性 */
    public static String AddPartition(String nonce,String timestamp) {
     	Map<String, Object> param = new HashMap<>();
     	//公共参数
         param.put("Action", "AddPartition");
         param.put("Nonce", nonce);
         param.put("Timestamp",timestamp);
         param.put("SignatureMethod", signatureMethod);
         param.put("Region", "ap-guangzhou");
         param.put("SecretId", secretId);
         //输入参数
         param.put("instanceId",instanceId);//实例 ID
         param.put("topicName", "topic_jensen1");//主题名称
         param.put("partitionNum", 3);//Partition 个数,大于0
     	return getResult(param,url);
     }

4. 执行

代码语言:javascript
代码运行次数:0
复制
    	//修改主题属性
    	String result=AddPartition(nonce,timestamp);

5. 结果

添加前是2个分区

执行后:

五、获取主题列表

1. 接口描述

接口请求域名:ckafka.api.qcloud.com 本接口(ListTopic)用于在用户获取消息队列 CKafka 实例的主题列表。

2. 输入参数

以下请求参数列表仅列出了接口请求参数,其它参数见 公共请求参数 文档。

参数名称

必选

类型

描述

instanceId

是

String

实例 ID

searchWord

否

String

(过滤条件)按照 topicName 过滤,支持模糊查询

offset

否

Int

偏移量,不填默认为0

limit

否

Int

返回数量,不填则默认为10,最大值为20

3. java实现

代码语言:javascript
代码运行次数:0
复制
	/* 获取主题列表 */
    public static String GetListTopic(String nonce,String timestamp) {
    	Map<String, Object> param = new HashMap<>();
        param.put("Action", "ListTopic");
        param.put("Nonce", nonce);
        param.put("Timestamp",timestamp);
        param.put("SignatureMethod", signatureMethod);
        param.put("Region", "ap-guangzhou");
        param.put("SecretId", secretId);
        param.put("instanceId",instanceId);
    	return getResult(param,url);
    }

4. 执行

代码语言:javascript
代码运行次数:0
复制
    	//获取主题列表
    	String result=GetListTopic(nonce,timestamp);

5. 结果

代码语言:javascript
代码运行次数:0
复制
{"code":0,"message":"","codeDesc":"Success","data":{"totalCount":4,"topicList":[
{"topicId":"topic-pc6bi41k","topicName":"topic_jensen1","note":"topic_jensen1"},
{"topicId":"topic-7p2pzlo4","topicName":"topic_test1","note":""},
{"topicId":"inter-topic-kfjiqvgo","topicName":"bowenqiu_test1","note":""},
{"topicId":"topic-3yueh1ge","topicName":"bowenqiu_topic1","note":"bowenqiu_topic1"}]}}

六、获取主题属性

1. 接口描述

接口请求域名:ckafka.api.qcloud.com 本接口 (GetTopicAttributes) 用于在用户获取消息队列 CKafka 实例的主题属性。

2. 输入参数

以下请求参数列表仅列出了接口请求参数,其它参数见 公共请求参数 页面。

参数名称

必选

类型

描述

instanceId

是

String

实例 ID

topicName

是

String

主题名称

3. java实现

代码语言:javascript
代码运行次数:0
复制
	/* 获取主题属性 */
    public static String GetTopicAttributes(String nonce,String timestamp) {
    	Map<String, Object> param = new HashMap<>();
        param.put("Action", "GetTopicAttributes");
        param.put("Nonce", nonce);
        param.put("Timestamp",timestamp);
        param.put("SignatureMethod", signatureMethod);
        param.put("Region", "ap-guangzhou");
        param.put("SecretId", secretId);
        param.put("instanceId",instanceId);
        param.put("topicName", "topic_jensen1");//主题名称 
    	return getResult(param,url);
    }

4. 执行

代码语言:javascript
代码运行次数:0
复制
    	//获取主题属性 
    	String result=GetTopicAttributes(nonce,timestamp);

5. 结果

代码语言:javascript
代码运行次数:0
复制
{"code":0,"message":"","codeDesc":"Success","data":{"topicId":"topic-pc6bi41k","createTime":1568105142,"note":"topic_jensen1","partitionNum":3,"enableWhiteList":1,"ipWhiteList":["10.1.1.250"],"config":{"min.insync.replicas":1,"unclean.leader.election.enable":"false","retention.ms":60000,"segment.ms":86400000,"cleanup.policy":"delete","max.message.bytes":1024},"partitions":[
{"partition":0,"leaderStatus":0,"isrNum":2,"replicaNum":2},
{"partition":1,"leaderStatus":0,"isrNum":2,"replicaNum":2},
{"partition":2,"leaderStatus":0,"isrNum":2,"replicaNum":2}]}}

七、增加主题白名单

1. 接口描述

接口请求域名:ckafka.api.qcloud.com 本接口(AddTopicIpwhitelist)用于在用户增加主题白名单。

2. 输入参数

以下请求参数列表仅列出了接口请求参数,其它参数见 公共请求参数 文档。

参数名称

必选

类型

描述

instanceId

是

String

实例 ID

topicName

是

String

主题名称

ipWhiteList.n

是

String

必选,IP 白名单列表

说明:

当 IP 白名单列表为空时认为禁止所有 IP 访问该 topic,否则只允许列表中的 IP 访问。该接口将 ipWhiteList 中的 IP 添加到现有白名单中。

3. java实现

代码语言:javascript
代码运行次数:0
复制
	/* 增加主题白名单 */
    public static String AddTopicIpwhitelist(String nonce,String timestamp) {

    	Map<String, Object> param = new HashMap<>();
        param.put("Action", "AddTopicIpwhitelist");
        param.put("Nonce", nonce);
        param.put("Timestamp",timestamp);
        param.put("SignatureMethod", signatureMethod);
        param.put("Region", "ap-guangzhou");
        param.put("SecretId", secretId);
        param.put("instanceId",instanceId);
        param.put("topicName", "topic_jensen1");//主题名称 
        param.put("ipWhiteList.0","10.10.10.10");
        param.put("ipWhiteList.1","20.20.20.20");
    	return getResult(param,url);
    }

4. 执行

代码语言:javascript
代码运行次数:0
复制
        //增加主题白名单
        String result=AddTopicIpwhitelist(nonce,timestamp);

5. 结果

执行前:

{"code":0,"message":"","codeDesc":"Success","data":[]}

八、删除主题白名单

1. 接口描述

本接口(DeleteTopicIpwhitelist)用于在用户删除主题白名单。

接口请求域名:ckafka.api.qcloud.com。

2. 输入参数

以下请求参数列表仅列出了接口请求参数,其它参数见 公共请求参数 文档。

参数名称

必选

类型

描述

instanceId

是

String

实例 ID

topicName

是

String

主题名称

ipWhiteList.n

是

String Array

必选,IP 白名单列表

3. java实现

代码语言:javascript
代码运行次数:0
复制
	/* 删除主题白名单 */
    public static String DeleteTopicIpwhitelist(String nonce,String timestamp) {
    	Map<String, Object> param = new HashMap<>();
        param.put("Action", "DeleteTopicIpwhitelist");
        param.put("Nonce", nonce);
        param.put("Timestamp",timestamp);
        param.put("SignatureMethod", signatureMethod);
        param.put("Region", "ap-guangzhou");
        param.put("SecretId", secretId);
        param.put("instanceId",instanceId);
        param.put("topicName", "topic_jensen1");//主题名称 
        param.put("ipWhiteList.0","10.10.10.10");
        //param.put("ipWhiteList.1","20.20.20.20");
    	return getResult(param,url);
    }

4. 执行

代码语言:javascript
代码运行次数:0
复制
    	//删除主题白名单
    	String result=DeleteTopicIpwhitelist(nonce,timestamp);

5. 结果

{"code":0,"message":"","codeDesc":"Success","data":[]}

之前是有3个IP:

下一篇
举报
领券