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

2019-09-16 11:04:35 浏览数 (1)

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

一、创建主题

1. 接口描述

接口请求域名:ckafka.api.zijiebao.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复制

	/* 创建主题
	 * 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复制
  //修改主题属性
  String result=SetTopicAttributes(nonce,timestamp);

5. 结果

执行前:

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

执行后:

实例详情实例详情

二、修改主题属性

1. 接口描述

接口请求域名:ckafka.api.zijiebao.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复制
	/* 修改主题属性 */
   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复制
    	//修改主题属性
    	String result=SetTopicAttributes(nonce,timestamp);

5. 结果

三、删除主题

1. 接口描述

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

2. 输入参数

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

参数名称

必选

类型

描述

instanceId

String

实例 ID

topicName

String

主题名称

3. java实现

代码语言:javascript复制
	/* 删除主题 */
    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复制
    	//删除主题
    	String result=DeleteTopic(nonce,timestamp);

5. 结果

删除前删除前

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

四、增加分区

1. 接口描述

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

2. 输入参数

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

参数名称

必选

类型

描述

instanceId

String

实例 ID

topicName

String

主题名称

partitionNum

Int

partition个数

3. java实现

代码语言:javascript复制
	/* 修改主题属性 */
    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复制
    	//修改主题属性
    	String result=AddPartition(nonce,timestamp);

5. 结果

添加前是2个分区

执行后:

五、获取主题列表

1. 接口描述

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

2. 输入参数

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

参数名称

必选

类型

描述

instanceId

String

实例 ID

searchWord

String

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

offset

Int

偏移量,不填默认为0

limit

Int

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

3. java实现

代码语言:javascript复制
	/* 获取主题列表 */
    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复制
    	//获取主题列表
    	String result=GetListTopic(nonce,timestamp);

5. 结果

代码语言:javascript复制
{"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.zijiebao.com 本接口 (GetTopicAttributes) 用于在用户获取消息队列 CKafka 实例的主题属性。

2. 输入参数

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

参数名称

必选

类型

描述

instanceId

String

实例 ID

topicName

String

主题名称

3. java实现

代码语言:javascript复制
	/* 获取主题属性 */
    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复制
    	//获取主题属性 
    	String result=GetTopicAttributes(nonce,timestamp);

5. 结果

代码语言:javascript复制
{"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.zijiebao.com 本接口(AddTopicIpwhitelist)用于在用户增加主题白名单。

2. 输入参数

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

参数名称

必选

类型

描述

instanceId

String

实例 ID

topicName

String

主题名称

ipWhiteList.n

String

必选,IP 白名单列表

说明:

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

3. java实现

代码语言:javascript复制
	/* 增加主题白名单 */
    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复制
        //增加主题白名单
        String result=AddTopicIpwhitelist(nonce,timestamp);

5. 结果

执行前:

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

八、删除主题白名单

1. 接口描述

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

接口请求域名:ckafka.api.zijiebao.com

2. 输入参数

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

参数名称

必选

类型

描述

instanceId

String

实例 ID

topicName

String

主题名称

ipWhiteList.n

String Array

必选,IP 白名单列表

3. java实现

代码语言:javascript复制
	/* 删除主题白名单 */
    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复制
    	//删除主题白名单
    	String result=DeleteTopicIpwhitelist(nonce,timestamp);

5. 结果

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

之前是有3个IP:

0 人点赞