tencent cloud

消息队列 RocketMQ 版

动态与公告
新功能发布记录
公告
产品简介
产品概述
什么是消息队列 RocketMQ 版
产品优势
应用场景
产品系列
开源对比
高可用
使用限制
开服地域
基本概念
产品计费
计费概述
价格说明
计费示例
切换集群计费模式(5.x)
续费说明
查看消费明细
退费说明
欠费说明
快速入门
快速入门概述
准备工作
步骤1:创建 RocketMQ 资源
步骤2:使用 SDK 收发消息(推荐)
步骤2:运行 RocketMQ 客户端(可选)
步骤3:查询消息
步骤4:销毁资源
用户指南
使用流程指引
配置账号权限
新建集群
命名空间管理
配置 Topic
配置 Group
连接集群
管理消息
管理集群
查看监控和配置告警
跨集群复制消息
实践教程
RocketMQ 常见概念命名规范
RocketMQ 客户端实践
RocketMQ 性能压测和容量评估
使用社区版 HTTP SDK 接入
客户端风险说明和更新指南
关于 RocketMQ 4.x 集群角色(Role)相关云 API 迁移指引
迁移指南
有感迁移
无感迁移
开发指南
消息类型
消息过滤
消息重试
POP 消费模式(5.x)
集群消费与广播消费
订阅关系一致性
限流
API 参考(5.x)
History
API Category
Making API Requests
Topic APIs
Consumer Group APIs
Message APIs
Role Authentication APIs
Hitless Migration APIs
Cloud Migration APIs
Cluster APIs
Data Types
Error Codes
API 参考(4.x)
SDK 参考
SDK 概述
5.x SDK
4.x SDK
安全与合规
权限管理
云 API 审计
删除保护
常见问题
4.x 实例常见问题
服务协议
服务等级协议
联系我们

发送与接收普通消息

PDF
聚焦模式
字号
最后更新时间: 2026-01-23 17:07:04

操作场景

本文以调用 Spring Boot Starter SDK 为例介绍通过开源 SDK 实现消息收发的操作过程,帮助您更好地理解消息收发的完整过程。

前提条件

已参考 SDK 概述,获取相关的客户端连接参数

操作步骤

步骤1:添加依赖

在 pom.xml 中添加依赖,建议使用 2.3.3 最新版本,可以同时支持 Spring Boot 2 和 Spring Boot 3。
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.3.3</version>
</dependency>

步骤2:准备配置

在配置文件中添加配置信息。
server:
port: 8082

#rocketmq配置信息
rocketmq:
# tdmq-rocketmq服务接入地址
name-server: rocketmq-xxx.rocketmq.ap-bj.public.tencenttdmq.com:9876
# 生产者配置
producer:
# 生产者组名
group: group111
# 角色密钥
access-key: eyJrZXlJZC....
# 已授权的角色名称
secret-key: admin
# 消费者公共配置
consumer:
# 角色密钥
access-key: eyJrZXlJZC....
# 已授权的角色名称
secret-key: admin

# 自定义配置,根据业务进行配置
namespace: rocketmq-xxx|namespace1
producer1:
topic: testdev1
consumer1:
group: group111
topic: testdev1
subExpression: TAG1
consumer2:
group: group222
topic: testdev1
subExpression: TAG2
参数
说明
name-server
集群接入地址,在控制台集群基本信息页面的接入信息模块获取。

group
生产者的名称,用户自行定义,可以使用对应的 Topic 名字。
secret-key
角色名称,在控制台的集群权限页面 SecretKey 列复制。
access-key
角色密钥,在控制台的集群权限页面 AccessKey 列复制。

namespace
命名空间的名称,在控制台命名空间页面复制。如果您使用的是5.x集群或者 4.x 通用集群,此处填写集群 ID 即可。
topic
Topic 的名称,在控制台 Topic 管理页面复制。
subExpression
用来设置消息的 TAG。

步骤3:发送消息

1. 在需要发送消息的类中注入 RocketMQTemplate
@Value("${rocketmq.namespace}%${rocketmq.producer1.topic}")
private String topic; // topic名称 (需要使用topic全称,所以在这里对topic名称进行拼接)
@Autowired
private RocketMQTemplate rocketMQTemplate;
2. 发送消息,消息体可以是自定义对象,也可以是 Message 对象(org.springframework.messaging包中)。
SendResult sendResult = rocketMQTemplate.syncSend(destination, message);
/*------------------------------------------------------------------------*/
rocketMQTemplate.syncSend(destination, MessageBuilder.withPayload(message).build())
3. 完整示例如下:
/**
* Description: 消息生产者
*/
@Service
public class SendMessage {
// 需要使用topic全称,所以进行topic名称的拼接,也可以自己设置 格式:namespace全称%topic名称
@Value("${rocketmq.namespace}%${rocketmq.producer1.topic}")
private String topic;
@Autowired
private RocketMQTemplate rocketMQTemplate;
/**
* 同步发送
*
* @param message 消息内容
* @param tags 订阅tags
*/
public void syncSend(String message, String tags) {
// springboot不支持使用header传递tags,根据要求,需要在topic后进行拼接 formats: `topicName:tags`,不拼接标识无tag
String destination = StringUtils.isBlank(tags) ? topic : topic + ":" + tags;
SendResult sendResult = rocketMQTemplate.syncSend(destination,
MessageBuilder.withPayload(message)
.setHeader(MessageConst.PROPERTY_KEYS, "yourKey") // 指定业务key
.build());
System.out.printf("syncSend1 to topic %s sendResult=%s %n", topic, sendResult);
}
}
说明
该示例为同步发送。异步发送,单向发送等请参见Demo

步骤4:消费消息

@Service
@RocketMQMessageListener(
consumerGroup = "${rocketmq.namespace}%${rocketmq.consumer1.group}", // 消费组,格式:namespace全称%group名称
// 需要使用topic全称,所以进行topic名称的拼接,也可以自己设置 格式:namespace全称%topic名称
topic = "${rocketmq.namespace}%${rocketmq.consumer1.topic}",
selectorExpression = "${rocketmq.consumer1.subExpression}" // 订阅表达式, 不配置表示订阅所有消息
)
public class MessageConsumer implements RocketMQListener<String> {

@Override
public void onMessage(String message) {
System.out.println("Tag1Consumer receive message:" + message);
}
}
可根据业务需求配置多个消费者。消费者其他配置可根据具体业务需求进行配置。
说明:
完整示例参见下载 Demo

步骤5:查看消息详情

消息发送完成后会得到一个消息 ID (messageID),您可以在控制台的消息查询 > 综合查询页面查询刚刚发送的消息,以及该消息的详情和轨迹等信息。


帮助和支持

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

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

文档反馈