1. RocketMQ名词解释
1.1 主题(Topic)
表示一类消息的集合,每个主题包含若干条消息,是RocketMQ进行消息订阅的基本单位。
1.2 标签(Tag)
为消息设置的标志,用于同一topic下区分不同类型的消息。可以根据topic+Tag实现消息的精细化生产和消费。
1.3 消息(Message)
消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须属于一个主题。每个消息拥有唯一的Message ID,且可以携带具有业务标识的Key。系统提供了通过Message ID和Key查询消息的功能。
1.4 订阅与发布
消息的发布是指某个生产者向某个topic发送消息;消息的订阅是指某个消费者关注了某个topic中带有某些tag的消息,进而从该topic消费数据。
2. RocketMQ安装
- 下载地址 rocketmq下载
- 选择Binary进行下载
3. 系统环境变量配置
- 变量名:ROCKETMQ_HOME
- 变量值:MQ解压路径\MQ文件夹名
4. 启动
- 启动NAMESERVER
Cmd命令框执行进入至‘MQ文件夹\bin’下,然后执行‘start mqnamesrv.cmd’,启动NAMESERVER。成功后会弹出提示框,此框勿关闭
注意:需在Java8环境下启动
5. RocketMQ插件部署
- 下载
- 编译
用CMD进入‘\rocketmq-console’文件夹,执行maven命令编译生成jar包
mvn clean package -Dmaven.test.skip=true
- 启动
编译成功之后,Cmd进入‘target’文件夹,执行命令,启动‘rocketmq-console-ng-2.0.0.jar’。
java -jar rocketmq-console-ng-2.0.0.jar
- 测试
浏览器中输入‘127.0.0.1:配置端口’,成功后即可查看。
eg:http://127.0.0.1:8088
6. Springboot整合RocketMQ
5.1 引入依赖
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
5.2 创建生产者
@RocketMQMessageListener
消息监听器,消费者通过参数topic、selectorExpression来监听生产者发送消息的topic和tags
@Slf4j
@RocketMQMessageListener(consumerGroup = "rocketmq-consumer",
topic = "rocketmqTest",
selectorExpression = "tags"
)
public class ConsumerManagerImpl implements ConsumerManager {
@Override
public void onMessage(String msg) {
log.info("msg: {}", msg);
}
}
5.4 yml配置
#rocketmq配置
rocketmq:
producer:
group: rocketmq
name-server: 127.0.0.1:9876
5.5 创建测试接口
@RestController
@RequestMapping("/MQTest")
public class MQController {
@Resource
ProducerManagerImpl producerManager;
@GetMapping("/sendMessage")
public String sendMessage(@RequestParam("message") String message){
producerManager.sendMessage("rocketmqTest", message);
return "消息发送完成";
}
}