Java SDK
最近更新时间: 2025-10-11 18:10:00
操作场景
本文以 Java 语言为例介绍通过 HTTP 协议接入 TDMQ Pulsar 版并收发消息的操作方法。
前提条件
操作步骤
- 首先参考 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>
- 创建 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 | 集群所属地域。 |
- 发送消息。
// 实例化一个请求对象,每个接口都会对应一个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 管理 页面直接复制。 |
- 消费消息。
// 实例化一个请求对象,每个接口都会对应一个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 页面复制。 |
- 确认消息。
// 实例化一个请求对象,每个接口都会对应一个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。
