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