GO SDK

最近更新时间: 2025-10-11 18:10:00

操作场景

本文以 Go 语言为例介绍通过 HTTP 协议接入 TDMQ Pulsar 版并收发消息的操作方法。、

前提条件

操作步骤

  1. 准备环境。
    1. 使用镜像加速下载。
      1. Linux 或 MacOS。
export GOPROXY=https://mirrors.tencent.com/go/
  2. Windows。
set GOPROXY=https://mirrors.tencent.com/go/
  1. 安装基础包与产品包。
    1. 安装公共基础包。
go get -v -u github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common
  2. 安装 TDMQ 对应的产品包。
go get -v -u github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tdmq

说明:

更多详情可参见 Go SDK 安装

  1. 创建 TDMQ 客户端。
// 认证信息
credential := common.NewCredential(SECRET_ID, SECRET_KEY)
cpf := profile.NewClientProfile()
cpf.HttpProfile.Endpoint = ENDPOINT
// 创建tdmq客户端
client, _ := tdmq.NewClient(credential, REGION, cpf)
参数 说明
SECRET_ID、SECRET_KEY 云 API 密钥,登录 访问管理控制台,在访问密钥 > API 密钥管理页面复制。
ENDPOINT 接口请求域名: tdmq.tencentcloudapi.com
REGION 集群所属地域。
  1. 发送消息。
request := tdmq.NewSendMessagesRequest()
// 已授权角色密钥
request.StringToken = common.StringPtr(token)
// 已授权角色名称
request.ProducerName = common.StringPtr(userName)
// 设置topic名称, 格式为:集群(租户)ID/命名空间/Topic名称
request.Topic = common.StringPtr(topicName)
// 消息内容
request.Payload = common.StringPtr("this is a new message.")
// 发送消息超时时间
request.SendTimeout = common.Int64Ptr(3000)
// 发送消息
response, err := client.SendMessages(request)
if _, ok := err.(*errors.TencentCloudSDKError); ok {
    fmt.Printf("An API error has returned: %s", err)
    return
}
if err != nil {
    panic(err)
}
参数 说明
token 角色密钥,在 角色管理 页面复制密钥列复制。
userName 角色名称,在 角色管理 页面复制名称列复制。
topicName Topic 名称,格式为:集群(租户)ID/命名空间/Topic 名称,示例:pulsar-xxx/sdk_http/topic1。可以从控制台上 Topic 管理 页面直接复制。
  1. 消费消息。
request := tdmq.NewReceiveMessageRequest()
// 设置topic名称, 格式为:集群(租户)ID/命名空间/Topic名称
request.Topic = common.StringPtr(topicName)
// 设置订阅名称
request.SubscriptionName = common.StringPtr(subName)
// consumer接收的消息会首先存储到receiverQueueSize这个队列中,用作调优接收消息的速率
request.ReceiverQueueSize = common.Int64Ptr(10)
// 设置consumer初始接收消息的位置,可选参数为:Earliest, Latest
request.SubInitialPosition = common.StringPtr("Latest")
// 消费消息
response, err := client.ReceiveMessage(request)
if _, ok := err.(*errors.TencentCloudSDKError); ok {
    fmt.Printf("An API error has returned: %s", err)
    return
}
if err != nil {
    panic(err)
}
参数 说明
topicName Topic 名称,格式为:集群(租户)ID/命名空间/Topic名称,示例:pulsar-xxx/sdk_http/topic1。可以从控制台上
Topic 管理页面直接复制。
subName 订阅名称,可在控制台集群管理>消费者tab 页面复制。
  1. 确认消息。
request := tdmq.NewAcknowledgeMessageRequest()
// 设置消息id
request.MessageId = common.StringPtr(messageId)
// 设置topic名称, 格式为:集群(租户)ID/命名空间/Topic名称
request.AckTopic = common.StringPtr(topicName)
// 设置订阅信息
request.SubName = common.StringPtr(subName)
// 确认消息
response, err := client.AcknowledgeMessage(request)
if _, ok := err.(*errors.TencentCloudSDKError); ok {
    fmt.Printf("An API error has returned: %s", err)
    return
}
if err != nil {
    panic(err)
}
参数 说明
messageId 消费消息获取导的消息 ID。
topicName Topic名称,格式为:集群(租户)ID/命名空间/Topic名称,示例:pulsar-xxx/sdk_http/topic1。可以从控制台上 Topic 管理 页面直接复制。
subName 订阅名称,可在控制台集群管理 > 消费者 tab 页面复制。

说明:

上述是对消息收发操作的简单介绍,完整实例可参见 下载 Demo 或 云API Explorer。