@rocketmqmessagelistener 是 rocketmq spring boot starter 提供的声明式消息监听注解,用于快速绑定消费者到指定 topic 和 consumergroup;需配置 topic 和 consumergroup 两个必填属性,并支持 selectortype、selectorexpression、consumemode、messagemodel 等扩展配置;consumergroup 必须全局唯一且稳定,topic 需提前创建或启用 autocreatetopicenable。

@RocketMQMessageListener 是 RocketMQ Spring Boot Starter 提供的声明式消息监听注解,用于快速绑定消费者到指定 Topic 和 ConsumerGroup,无需手动创建 Consumer 实例。
绑定 Topic 和 ConsumerGroup 的核心方式
通过注解的两个必填属性直接指定:
- topic:指定要订阅的 Topic 名称(字符串)
- consumerGroup:指定消费者组名称(字符串)
例如:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
public class MyMessageListener implements RocketMQListener
@Override
public void onMessage(String message) {
System.out.println("收到消息:" + message);
}
}
支持的额外关键配置
除基础绑定外,还可通过注解属性控制消费行为:
-
selectorType:消息选择器类型,如
Tag(默认)、Sql92 -
selectorExpression:配合 selectorType 使用,例如
"tagA || tagB"或 SQL 表达式"a = '1' AND b IS NOT NULL" -
consumeMode:消费模式,
CONCURRENTLY(并发,默认)或ORDERLY(顺序) -
messageModel:消息模型,
CLUSTERING(集群,默认)或BROADCASTING(广播)
注意 ConsumerGroup 必须全局唯一且稳定
同一个 ConsumerGroup 下的所有实例共同负载 Topic 的所有队列(Queue)。若多个应用误用相同 ConsumerGroup,会导致消息被重复消费或漏消费。
- 开发/测试环境建议加后缀区分,如
my-app-dev - 生产环境需统一配置管理,避免硬编码导致不一致
- ConsumerGroup 名称不能含特殊字符(如空格、下划线以外的符号),推荐只用字母、数字、短横线
Topic 需提前在 RocketMQ 控制台或命令行创建
@RocketMQMessageListener 不会自动创建 Topic。若 Topic 不存在,启动时会报错或静默失败(取决于 broker 配置)。
- 可通过
mqadmin updateTopic命令创建 - 或使用 RocketMQ Console 页面手动添加
- 确保 Broker 开启了自动创建 Topic 功能(
autoCreateTopicEnable=true)——仅限测试环境启用
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










