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:创建主题

1. 登录 TDMQ CMQ 版 控制台。
2. 在左侧导航栏选择主题订阅,选择好地域,单击新建,填写主题名称。

主题名称:以字母起始,只能包含字母、数字、“-”及“_”,最大64字符,创建后不能修改,不区分大小写。
消息堆积:未触发推送到订阅者,或订阅者接收失败的消息,暂时堆积到主题中。
消息过滤类型:
标签:CMQ 提供生产、订阅的消息标签匹配能力,可用于消息过滤。详细规则参见 标签键匹配功能说明
路由匹配:Binding key、Routing key 是组合使用的,完全兼容 rabbitmq topic 匹配模式。发消息时配的 Routing key 是客户端发消息带的。创建订阅关系时配的 Binding key 是 topic 和 订阅者 的绑定关系。详细规则请参见 路由键匹配功能说明
资源标签:选填,标签可以帮助您从各种维度方便地对 TDMQ CMQ 版资源进行分类管理,具体使用方法可参见 标签管理
3. 单击提交,在主题订阅列表可以看到创建好的主题。

步骤2:创建订阅

主题发布消息有一个前提,即需要有订阅者订阅主题,如果没有订阅者存在,那么主题中的消息不会被投递,此时发布消息这一操作就失去了意义。
1. 主题订阅 页面,单击刚刚创建的主题的“ID”,进入主题详情页面。
2. 选择页面上方的订阅者页签,单击新建,填写订阅者相关信息。

订阅者类型
Queue 队列服务:订阅者可以填写一个 Queue,使用队列来接收发布的消息。
URL地址:订阅者也可以不与 Queue 结合,自己来处理消息。详情请参见 投递消息
添加订阅者标签:添加订阅者时,需增加 FilterTag。增加 FilterTag 后,该订阅者仅能收到带该 FilterTag 的消息,单个订阅者最多可添加5个 tag。只要其中某个 tag 能匹配 Topic 的过滤标签,订阅者即可收到该次 Topic 投递的消息,若消息不带任何标签,则该订阅者无法收到该类型消息。
标签:详细规则参见 标签键匹配功能说明
路由匹配:详细规则请参见 路由键匹配功能说明
重试策略:主题发布消息之后,会自动将消息推送给订阅,当推送失败时,有两种重试策略:
退避重试:重试3次,间隔时间为10s - 20s之间的一个随机值,超过3次后,该条消息对于该订阅者丢弃,不会再重试。
衰退指数重试:重试176次,总计重试时间为1天,间隔时间依次为:2^0,2^1, …,512,512, …,512秒。默认为衰退指数重试策略。
3. 单击提交,在订阅者列表可以看到刚刚创建好的订阅者。

步骤3:使用 SDK 收发消息

说明:
以下示例以 Java 语言客户端说明,其他语言客户端接入请参见 SDK 文档
1. 下载 Demo 并解压。
2. 引入cmq客户端相关依赖
<!-- 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. 创建Topic对象
Account account = new Account(SERVER_ENDPOINT, SECRET_ID, SECRET_KEY);
Topic topic = account.getTopic(topicName);

参数
说明
SERVER_ENDPOINT
API 调用地址,在 TDMQ CMQ 版控制台主题订阅 > API 请求地址处复制。![](https://qcloudimg.tencent-cloud.cn/raw/910150612a00a6461ff923cd53a1ec97.png)
SECRET_ID、SECRET_KEY
云 API 密钥,登录 访问管理控制台,在访问密钥 > API 密钥管理页面复制。![](https://qcloudimg.tencent-cloud.cn/raw/82946cd1e7b1d46a9ccb06ef171137da.png)
topicName
主题订阅名称,在 TDMQ CMQ 版控制台主题订阅列表页面获取。

4. 发送 TAG 类型消息。
String msg = "hello client, this is a message. tag=TAG1. Time:" + new Date();
List<String> tags = Collections.singletonList("TAG1");
String messageId = topic.publishMessage(msg, tags, null);

5. 发送 route 消息。
String msg = "hello client, this is a message. route(abc) Time:" + new Date();
String messageId = topic.publishMessage(msg, "abc");

6. 消费消息,使用订阅者对应的queue进行消费
Account account = new Account(SERVER_ENDPOINT, SECRET_ID, SECRET_KEY);
Queue queue = account.getQueue(queueName);
Message message = queue.receiveMessage();
// 消费成功,删除消息。未删除的消息,将在一定时间后可重新投递
queue.deleteMessage(message.receiptHandle);

说明:
以上是 CMQ 的生产和消费方式的简单介绍,更多操作可参见 Demo

帮助和支持

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

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

文档反馈