Criação de um tópico para uma instância do Kafka
Função
Essa API é usada para criar um tópico para uma instância do Kafka.
Método de chamada
Para obter detalhes, consulte Chamada de APIs.
URI
POST /v2/{project_id}/instances/{instance_id}/topics
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
project_id |
Sim |
String |
ID do projeto. Para obter detalhes sobre como obtê-lo, consulte Obtenção de um ID de projeto. Mínimo: 1 Máximo: 64 |
instance_id |
Sim |
String |
ID da instância. Mínimo: 1 Máximo: 64 |
Parâmetros de solicitação
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
id |
Sim |
String |
Nome do tópico. O nome de um tópico tem de 3 a 200 caracteres, começa com uma letra e contém apenas letras, hifens (-), sublinhados (_), pontos (.) e dígitos. Mínimo: 3 Máximo: 200 |
replication |
Não |
Integer |
Número de réplicas, que é configurado para garantir a confiabilidade dos dados. Intervalo de valores: 1 a 3. Mínimo: 1 Máximo: 3 |
sync_message_flush |
Não |
Boolean |
Se a liberação síncrona está ativada. O valor padrão é false. A liberação síncrona compromete o desempenho. |
partition |
Não |
Integer |
Número de partições de tópicos, que é usado para definir o número de mensagens consumidas simultaneamente. Intervalo de valores: 1–100. Mínimo: 1 Máximo: 100 |
sync_replication |
Não |
Boolean |
Se a replicação síncrona está ativada. Depois que essa função for ativada, o parâmetro acks no cliente do produtor deve ser definido como –1. Caso contrário, esse parâmetro não terá efeito. |
retention_time |
Não |
Integer |
Indica o período de retenção de uma mensagem. O valor padrão é 72. Intervalo de valores: 1–168. Unidade: hora. |
topic_other_configs |
Não |
Array of topic_other_configs objects |
Configuração do tópico. Comprimento da matriz: 0–100 |
topic_desc |
Não |
String |
Descrição do tópico. Mínimo: 0 Máximo: 200 |
Parâmetros de resposta
Código de status: 200
Parâmetro |
Tipo |
Descrição |
---|---|---|
name |
String |
Nome do tópico. Mínimo: 3 Máximo: 200 |
Exemplo de solicitações
Criação de um tópico chamado test01
POST https://{endpoint}/v2/{project_id}/instances/{instance_id}/topics { "id" : "test01", "partition" : 3, "replication" : 3, "retention_time" : 72, "sync_message_flush" : false, "sync_replication" : "false", "topic_other_configs" : [ { "name" : "message.timestamp.type", "value" : "LogAppendTime" }, { "name" : "max.message.bytes", "value" : 10485760 } ], "topic_desc" : "" }
Exemplo de respostas
Código de status: 200
Bem-sucedido. Um nome de tópico é retornado.
{ "name" : "test01" }
Código de exemplo do SDK
O código de exemplo do SDK é o seguinte.
Java
Criação de um tópico chamado test01
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.kafka.v2.region.KafkaRegion; import com.huaweicloud.sdk.kafka.v2.*; import com.huaweicloud.sdk.kafka.v2.model.*; import java.util.List; import java.util.ArrayList; public class CreateInstanceTopicSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); String projectId = "{project_id}"; ICredential auth = new BasicCredentials() .withProjectId(projectId) .withAk(ak) .withSk(sk); KafkaClient client = KafkaClient.newBuilder() .withCredential(auth) .withRegion(KafkaRegion.valueOf("<YOUR REGION>")) .build(); CreateInstanceTopicRequest request = new CreateInstanceTopicRequest(); request.withInstanceId("{instance_id}"); CreateInstanceTopicReq body = new CreateInstanceTopicReq(); List<CreateInstanceTopicReqTopicOtherConfigs> listbodyTopicOtherConfigs = new ArrayList<>(); listbodyTopicOtherConfigs.add( new CreateInstanceTopicReqTopicOtherConfigs() .withName("message.timestamp.type") .withValue("LogAppendTime") ); listbodyTopicOtherConfigs.add( new CreateInstanceTopicReqTopicOtherConfigs() .withName("max.message.bytes") .withValue("10485760") ); body.withTopicDesc(""); body.withTopicOtherConfigs(listbodyTopicOtherConfigs); body.withRetentionTime(72); body.withSyncReplication(false); body.withPartition(3); body.withSyncMessageFlush(false); body.withReplication(3); body.withId("test01"); request.withBody(body); try { CreateInstanceTopicResponse response = client.createInstanceTopic(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } } |
Python
Criação de um tópico chamado test01
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# coding: utf-8 from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkkafka.v2.region.kafka_region import KafkaRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkkafka.v2 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = __import__('os').getenv("CLOUD_SDK_AK") sk = __import__('os').getenv("CLOUD_SDK_SK") projectId = "{project_id}" credentials = BasicCredentials(ak, sk, projectId) \ client = KafkaClient.new_builder() \ .with_credentials(credentials) \ .with_region(KafkaRegion.value_of("<YOUR REGION>")) \ .build() try: request = CreateInstanceTopicRequest() request.instance_id = "{instance_id}" listTopicOtherConfigsbody = [ CreateInstanceTopicReqTopicOtherConfigs( name="message.timestamp.type", value="LogAppendTime" ), CreateInstanceTopicReqTopicOtherConfigs( name="max.message.bytes", value="10485760" ) ] request.body = CreateInstanceTopicReq( topic_desc="", topic_other_configs=listTopicOtherConfigsbody, retention_time=72, sync_replication=False, partition=3, sync_message_flush=False, replication=3, id="test01" ) response = client.create_instance_topic(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
Go
Criação de um tópico chamado test01
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" kafka "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/kafka/v2" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/kafka/v2/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/kafka/v2/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") projectId := "{project_id}" auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). Build() client := kafka.NewKafkaClient( kafka.KafkaClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.CreateInstanceTopicRequest{} request.InstanceId = "{instance_id}" nameTopicOtherConfigs:= "message.timestamp.type" valueTopicOtherConfigs:= "LogAppendTime" nameTopicOtherConfigs1:= "max.message.bytes" valueTopicOtherConfigs1:= "10485760" var listTopicOtherConfigsbody = []model.CreateInstanceTopicReqTopicOtherConfigs{ { Name: &nameTopicOtherConfigs, Value: &valueTopicOtherConfigs, }, { Name: &nameTopicOtherConfigs1, Value: &valueTopicOtherConfigs1, }, } topicDescCreateInstanceTopicReq:= "" retentionTimeCreateInstanceTopicReq:= int32(72) syncReplicationCreateInstanceTopicReq:= false partitionCreateInstanceTopicReq:= int32(3) syncMessageFlushCreateInstanceTopicReq:= false replicationCreateInstanceTopicReq:= int32(3) request.Body = &model.CreateInstanceTopicReq{ TopicDesc: &topicDescCreateInstanceTopicReq, TopicOtherConfigs: &listTopicOtherConfigsbody, RetentionTime: &retentionTimeCreateInstanceTopicReq, SyncReplication: &syncReplicationCreateInstanceTopicReq, Partition: &partitionCreateInstanceTopicReq, SyncMessageFlush: &syncMessageFlushCreateInstanceTopicReq, Replication: &replicationCreateInstanceTopicReq, Id: "test01", } response, err := client.CreateInstanceTopic(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
Mais
Para obter o código de exemplo do SDK de mais linguagens de programação, consulte a guia Código de exemplo no API Explorer. O código de exemplo do SDK pode ser gerado automaticamente.
Códigos de status
Código de status |
Descrição |
---|---|
200 |
Bem-sucedido. Um nome de tópico é retornado. |
Códigos de erro
Consulte Códigos de erro.