安装RocketMQ,他是真的快!
一、下载压缩包解压
Q群:586012641,安装包群文件下载,不是任何机构的群,纯个人资源群,想来就来,想退就退,别打广告就行~
1、下载安装包,解压到D盘任意位置,下图是我文件夹所在位置
二、配置环境变量
ROCKETMQ_HOME
D:\SoftWare\rocketmq-all-4.4.0-bin-release
修改Path变量,新建下面内容
%ROCKETMQ_HOME%\bin
三、 启动NAMESERVER
Win+R,打开cmd窗口,切换到刚刚加压的bin目录下,输入:start mqnamesrv.cmd
会跳出下方窗口,不要关闭它。
四、启动BROKER
继续输入命令:start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true
会弹出下方弹框,安装成功
少数会出现的错误
如果弹出框提示‘错误: 找不到或无法加载主类 xxxxxx’。在bin下找到并打开runbroker.cmd,然后将‘%CLASSPATH%’加上英文双引号。保存并重新执行start语句。如下:
改完毕后,再次启动即可出现成功弹框。
五、安装可视化插件
下载插件压缩包后解压到D:\SoftWare\rocketmq-externals-master,进入\rocketmq-console\src\main\resources文件加,用编辑器打开application.properties文件,配置如下:
六、编译
进入rocketmq-externals\rocketmq-console 文件夹,执行:mvn clean package -Dmaven.test.skip=true,编译生成,编译成功如下:
七、启动
编译成功后,在rocketmq-externals\rocketmq-console下会生成target文件夹
进入target后执行:java -jar rocketmq-console-ng-1.0.1.jar,这里是在启动jar工程。
八、浏览器访问,进入控制台
RocketMQ各个角色介绍
-
Producer:消息的发送者;举例:发信者
-
Consumer:消息接收者;举例:收信者
-
Broker:暂存和传输消息;举例:邮局
-
NameServer:管理Broker;举例:各个邮局的管理机构
-
Topic:区分消息的种类;一个发送者可以发送消息给一个或者多个Topic;一个消息的接收者可以订阅一个或者多个Topic消息
-
Message Queue:相当于是Topic的分区;用于并行发送和接收消息
启动完毕后,在浏览器输入:http://localhost:8088/ 进入控制台
九、SpringBoot与RocketMq简单整合
1、rocketmq-spring-boot-starter 方式集成
使用Spring提供的Template方式要比直接使用client方式要简单很多,不需要再创建生产者和消费者,也不用再显式设置NameServer地址了(只需在配置文件中配置一下),也不用再显式的关闭生产者了。
1.1 pom.xml
<!-- RocketMQ相关依赖-->
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
1.2 application.yml
rocketmq:
name-server: localhost:9876 # 访问地址
producer:
group: Pro_Group # 必须指定group
send-message-timeout: 3000 # 消息发送超时时长,默认3s
retry-times-when-send-failed: 3 # 同步发送消息失败重试次数,默认2
retry-times-when-send-async-failed: 3 # 异步发送消息失败重试次数,默认2
1.3 发送消息
convertAndSend(String destination, Object payload) 发送字符串比较方便。
package com.nanyi.controller;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description:消息生产者
* @Author nanyi
* @Date 2021/7/14 13:24
**/
@RestController
public class RocketMQController {
@Autowired
private RocketMQTemplate rocketMQTemplate;
@RequestMapping("/send")
public void send() throws Exception {
rocketMQTemplate.convertAndSend("test-topic", "test message");
}
}
浏览器发送请求:http://localhost:8080/send
然后可在控制台查看到发送的消息
1.4 消费消息
消费消息使用@RocketMQMessageListener注解,只需要配置消费者组名和主题即可,需要实现RocketMQListener接口。
@RocketMQMessageListener
- consumerGroup:消费者组名(必须)
- topic:主题名(必须)
- consumeMode: 消费模式(是否顺序消费)
- ConsumeMode.CONCURRENTLY(默认方式,非顺序消费)
- ConsumeMode.ORDERLY(顺序消费)
- messageModel:消息模式
- MessageModel.CLUSTERING(默认方式,集群模式:同一个消息只能被一个消费者消费) ,
- MessageModel.BROADCASTING(广播模式:所有订阅的消费者都能够获取到消息)
package com.nanyi.service.impl;
import org.apache.rocketmq.common.message.MessageExt;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;
/**
* @Description:消费者
* @Author nanyi
* @Date 2021/7/14 13:43
**/
@Component
@RocketMQMessageListener(consumerGroup = "Pro_Group", topic = "test-topic")
public class TestConsumerListener implements RocketMQListener<MessageExt> {
@Override
public void onMessage(MessageExt messageExt) {
System.out.println("消费消息" + messageExt);
}
}
重新启动项目控制台会打印出消费语句
在控制台上可以查看消费情况