tencent cloud

消息队列 CMQ 版

动态与公告
产品动态
公告
产品简介
产品概述
产品功能
产品优势
应用场景
使用限制
基本概念
购买指南
计费概述
购买方式
价格总览
欠费说明
退费说明
快速入门
队列模型快速入门
主题模型快速入门
操作指南
队列服务
主题订阅
访问管理 CAM
标签管理
配置告警
消息查询与轨迹
实践教程
消息去重
选择 Push 还是 Pull
案例分享
在线图片处理案例
起点文学网案例
开发指南
HTTP Endpoint 订阅
通用参考
API 文档
API 列表
CMQ API2.0 切换至 TDMQ CMQ 版 API3.0指引
SDK 文档
HTTP 数据流 SDK
HTTP 控制流 SDK
SDK 参数配置说明
常见问题
功能类
操作类
服务等级协议
联系我们
词汇表

队列模型快速入门

PDF
聚焦模式
字号
最后更新时间: 2024-01-03 10:15:44

操作场景

本文为您介绍从零开始创建一个队列服务并使用 Java SDK 进行收发消息测试的方法,帮助您快速了解客户端接入 TDMQ CMQ 版所需的基本操作。

前提条件

操作步骤

步骤1:创建队列服务

2. 在左侧导航栏选择队列服务,选择地域后,单击新建,配置队列服务相关属性值。



属性
说明
取值
队列名称
QueueName,为队列的名称。
作为资源的唯一标识,调用 API 接口进行操作时,以 Queue name 为准,创建成功后无法修改。不区分大小写,相同字母即会判定为同名,并不能以 -retry 和 -dlq 结尾。

资源标签

选填,标签可以帮助您从各种维度方便地对 TDMQ CMQ 版资源进行分类管理,具体使用方法可参见 标签管理
-
消息最长未确认时间
如果消费客户端在获取到消息后超过此时间仍未进行消息的确认,则服务端会自动确认该消息。
范围在30秒到12小时
消息接收长轮询等待时间
PollingWaitSeconds,长轮询等待时,一个消息消费请求只会在取到有效消息或长轮询超时时才返回响应,类似于 Ajax 请求的长轮询。
范围在0秒到30秒,推荐设置为3秒,设置过高可能造成消息重复的概率提升。
取出消息隐藏时长
该项为队列的 VisibilityTimeout 属性,每条 Message 都有个默认的VisibilityTimeout,Worker 在接收到消息后,timeout 就开始计时了。如果 Worker 在 timeout 时间内没能处理完 Message,那么消息就有可能被其他 Worker 接收到并处理。
范围在1秒到12小时
不可见消息数量上限
不可见消息过多一般是客户端未及时 ACK 导致的,产生不可见消息会消耗一定的内存,因此为每个队列设置了一定的容量上限。
100000条,如需提升额度,请联系技术支持。
消息堆积容量上限
消息堆积一般是生产速率大于消费速率或者消费出现阻塞导致的,产生堆积会消耗一定的磁盘存储,因此为每个队列设置了一定的容量上限。
10GB,如需提升额度,请联系技术支持。
死信队列
死信队列用于处理无法被正常消费的消息。达到最大重试次数后,若消费依然失败,则表明消费者在正常情况下无法正确地消费该消息,此时,MQ 不会立刻将消息丢弃,而是将其发送到该消费者对应的特殊队列中。
-
消息回溯
若未开启“消息回溯”能力,则消费者已消费,且确认删除的消息,会立即删除,开启该功能时,须指定回溯的“可回溯周期”。
“可回溯周期”的范围,必须小于等于消息的生命周期。建议将回溯周期与消息的生命周期设置为相同的值,便于定位问题。
可回溯时间范围
若开启“消息回溯”能力,则消费者确认删除的消息不会立即删除,会持续保存到此处配置的最大时间。
时间范围:1天 - 15天,设置较长可能会产生昂贵的存储费用。最大可回溯时间点 = 当前时间 - 设置的可回溯时间范围。消息生产时间在这个值之前的不可回溯。
可回溯存储空间
开启回溯消息后,如果持久存储的消息超过此最大存储空间,则会从后向前删除(优先删除旧数据)。
存储空间范围:1GB - 10GB,设置较大可能会产生昂贵的存储费用。
3. 单击提交,在队列服务列表可以看到创建好的队列服务。

步骤2:使用 SDK 收发消息

说明:
以下示例以 Java 语言客户端说明,其他语言客户端接入请参见 SDK 文档
1. 下载 Demo 并解压。
2. 引入 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>

3. 发送消息。
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 密钥,登录 访问管理控制台,在访问密钥 > API 密钥管理页面复制。



queueName
队列名称,在 TDMQ CMQ 版控制台 的队列服务列表页面获取。
4. 消费消息。
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 密钥,登录 访问管理控制台,在访问密钥 > API 密钥管理页面复制。



queueName
队列名称,在 TDMQ CMQ 版控制台的队列服务列表页面获取。
说明:
以上是 CMQ 的生产和消费方式的简单介绍,更多操作可参见 Demo


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈