操作场景
本文为您介绍从零开始创建一个队列服务并使用 Java SDK 进行收发消息测试的方法,帮助您快速了解客户端接入 TDMQ CMQ 版所需的基本操作。
操作步骤
步骤1:创建队列服务
登录 TDMQ CMQ 版控制台。
在左侧导航栏选择队列服务,选择地域后,单击新建,配置队列服务相关属性值。
属性 说明 取值 队列名称 QueueName,为队列的名称。 作为资源的唯一标识,调用 API 接口进行操作时,以 Queue name 为准,创建成功后无法修改。不区分大小写,相同字母即会判定为同名,并不能以 -retry 和 -dlq 结尾。 消息最长未确认时间 如果消费客户端在获取到消息后超过此时间仍未进行消息的确认,则服务端会自动确认该消息。 范围在30秒到12小时 消息接收长轮询等待时间 PollingWaitSeconds,长轮询等待时,一个消息消费请求只会在取到有效消息或长轮询超时时才返回响应,类似于 Ajax 请求的长轮询。 范围在0秒到30秒,推荐设置为3秒,设置过高可能造成消息重复的概率提升。 取出消息隐藏时长 该项为队列的 VisibilityTimeout 属性,每条 Message 都有个默认的VisibilityTimeout,Worker 在接收到消息后,timeout 就开始计时了。如果 Worker 在 timeout 时间内没能处理完 Message,那么消息就有可能被其他 Worker 接收到并处理。 范围在1秒到12小时 死信队列 死信队列用于处理无法被正常消费的消息。达到最大重试次数后,若消费依然失败,则表明消费者在正常情况下无法正确地消费该消息,此时,MQ 不会立刻将消息丢弃,而是将其发送到该消费者对应的特殊队列中。 - 消息回溯 若未开启“消息回溯”能力,则消费者已消费,且确认删除的消息,会立即删除,开启该功能时,须指定回溯的“可回溯周期”。 “可回溯周期”的范围,必须小于等于消息的生命周期。建议将回溯周期与消息的生命周期设置为相同的值,便于定位问题。 单击提交,在队列服务列表可以看到创建好的队列服务。
步骤2:使用 SDK 收发消息
- 下载 Demo 并解压。
- 引入 CMQ 客户端相关依赖。
<!-- cmq sdk --><!-- cmq sdk -->
<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cmq-http-client</artifactId>
<version>1.0.7</version>
</dependency>
<!-- 云API sdk -->
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java</artifactId>
<version>3.1.423</version>
</dependency>
- 发送消息
Account account = new Account(SERVER_ENDPOINT, SECRET_ID, SECRET_KEY);
Queue queue = account.getQueue(queueName);
String msg = "hello client, this is a message. Time:" + new Date();
CmqResponse response = queue.send(msg);
| 参数 | 说明 |
| SERVER_ENDPOINT | API 调用地址,在TDMQ CMQ 版控制台的队列服务 > API 请求地址处复制。 |
| SECRET_ID、SECRET_KEY | 云 API 密钥,在用户与权限列表页面复制。![]() |
| queueName | 队列名称,在 TDMQ CMQ 版控制台的队列服务列表页面获取。 |
- 消费消息。
Account account = new Account(SERVER_ENDPOINT, SECRET_ID, SECRET_KEY);
Queue queue = account.getQueue(queueName);
Message message = queue.receiveMessage();
// 消费成功,删除消息。未删除的消息,将在一定时间后可重新投递
queue.deleteMessage(message.receiptHandle);
| 参数 | 说明 |
| SERVER_ENDPOINT | API 调用地址,在TDMQ CMQ 版控制台的队列服务 > API 请求地址处复制。 |
| SECRET_ID、SECRET_KEY | 云 API 密钥,在用户与权限列表页面复制。![]() |
| queueName | 队列名称,在 TDMQ CMQ 版控制台的队列服务列表页面获取。 |

