tencent cloud

文档反馈

主题模型快速入门

最后更新时间: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
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持