Java SDK

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

操作场景

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

前提条件

操作步骤

  1. 首先参考 Java SDK 添加依赖。
<dependency>
    <groupId>com.tencentcloudapi</groupId>
    <artifactId>tencentcloud-sdk-java-tdmq</artifactId>
    <!-- go to https://search.maven.org/search?q=tencentcloud-sdk-java and get the latest version. -->
    <!-- 请到https://search.maven.org/search?q=tencentcloud-sdk-java查询所有版本,最新版本如下 -->
    <version>3.1.423</version>
</dependency>
  1. 创建 TDMQ 客户端。
// 实例化一个认证对象,入参需要传入账户secretId,secretKey,此处还需注意密钥对的保密
// 密钥可前往访问管理cam中进行获取
Credential cred = new Credential(secretId, secretKey);
// 实例化一个http选项,可选的,没有特殊需求可以跳过
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint(endpoint);
// 实例化一个client选项,可选的,没有特殊需求可以跳过
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
// 实例化要请求产品的client对象,clientProfile是可选的
TdmqClient client = new TdmqClient(cred, region, clientProfile);
参数 说明

secretId、secretKey
云 API 密钥,登录 访问管理控制台,在访问密钥 > API 密钥管理页面复制。
endpoint 接口请求域名: tdmq.tencentcloudapi.com
region 集群所属地域。
  1. 发送消息。
// 实例化一个请求对象,每个接口都会对应一个request对象
SendMessagesRequest req = new SendMessagesRequest();
// 设置授权角色密钥
req.setStringToken(token);
// 设置授权角色名称
req.setProducerName(userName);
// 设置topic名称, 格式为: 集群(租户)ID/命名空间/Topic名称
req.setTopic(topicName);
// 消息内容
req.setPayload("this is a new message.");
// 设置发送超时时间
req.setSendTimeout(3000L);
// 返回的resp是一个SendMessagesResponse的实例,与请求对象对应
SendMessagesResponse resp = client.SendMessages(req);
参数 说明
token 角色密钥,在 角色管理 页面复制密钥列复制。
userName 角色名称,在 角色管理 页面复制名称列复制。
topicName Topic名称,格式为:集群(租户)ID/命名空间/Topic名称,示例:pulsar-xxx/sdk_http/topic1。可以从控制台上 Topic 管理 页面直接复制。
  1. 消费消息。
// 实例化一个请求对象,每个接口都会对应一个request对象
ReceiveMessageRequest req = new ReceiveMessageRequest();
// 设置topic名称, 格式为persistent://集群(租户)ID/命名空间/Topic名称
req.setTopic(topicName);
// 设置订阅名称
req.setSubscriptionName(subName);
// consumer接收的消息会首先存储到receiverQueueSize这个队列中,用作调优接收消息的速率
req.setReceiverQueueSize(10L);
// 设置consumer初始接收消息的位置,可选参数为:Earliest, Latest
req.setSubInitialPosition("Latest");
// 返回的resp是一个ReceiveMessageResponse的实例,与请求对象对应
ReceiveMessageResponse resp = client.ReceiveMessage(req);
参数 说明
topicName Topic名称,格式为:集群(租户)ID/命名空间/Topic名称,示例:pulsar-xxx/sdk_http/topic1。可以从控制台上 Topic 管理 页面直接复制。
subName 订阅名称,可在控制台集群管理 > 消费者 tab 页面复制。
  1. 确认消息。
// 实例化一个请求对象,每个接口都会对应一个request对象
AcknowledgeMessageRequest req = new AcknowledgeMessageRequest();
// 设置消息id
req.setMessageId(messageId);
// 设置topic名称, 格式为persistent://集群(租户)ID/命名空间/Topic名称
req.setAckTopic(topicName);
// 设置订阅名称
req.setSubName(subName);
// 返回的resp是一个AcknowledgeMessageResponse的实例,与请求对象对应
AcknowledgeMessageResponse resp = client.AcknowledgeMessage(req);
参数 说明
messageId 消费消息获取到的消息 ID。
topicName Topic 名称,格式为:集群(租户)ID/命名空间/Topic 名称,示例:pulsar-xxx/sdk_http/topic1。可以从控制台上 Topic 管理 页面直接复制。
subName 订阅名称,可在控制台集群管理 > 消费者 tab 页面复制。

说明:

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