前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CKafka系列学习文章 - 调用API接口管理主题(十三)

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

原创
作者头像
发哥说消息队列
修改2019-09-16 11:04:35
5610
修改2019-09-16 11:04:35
举报

导语:通过调用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
复制

	/* 创建主题
	 * 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.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
复制
	/* 修改主题属性 */
   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.qcloud.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.qcloud.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.qcloud.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.qcloud.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.qcloud.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.qcloud.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:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、创建主题
  • 二、修改主题属性
  • 三、删除主题
  • 四、增加分区
  • 五、获取主题列表
  • 六、获取主题属性
  • 七、增加主题白名单
  • 八、删除主题白名单
相关产品与服务
消息队列 CKafka 版
消息队列 CKafka 版(TDMQ for CKafka)是一个分布式、高吞吐量、高可扩展性的消息系统,100%兼容开源 Kafka API 2.4、2.8、3.2 版本。CKafka 基于发布/订阅模式,通过消息解耦,使生产者和消费者异步交互,无需彼此等待。CKafka 具有高可用、数据压缩、同时支持离线和实时数据处理等优点,适用于日志压缩收集、监控数据聚合、流式数据集成等场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档