RocketMQ搭建及测试(Windows环境)
文章目录
- 一、Windows环境下安装RocketMQ
- 二、搭建可视化控制台
- 三、搭建测试服务
一、Windows环境下安装RocketMQ
下载地址:
https://rocketmq.apache.org/zh/download/
确保已经安装了JDK
- 选择Binary下载二进制ZIP包,下载完之后进行解压
- 新建环境变量
变量名:ROCKETMQ_HOME
变量值:安装目录,例如:D:\Java\rocketmq-all-5.3.2-bin-release\rocketmq-all-5.3.2-bin-release
- PATH环境变量新增:
%ROKCETMQ_HOME%/bin
- 修改启动参数,默认参数比较大
bin/runserve.cmd
bin/runborker.cmd
bin/tools.sh
- 启动
NameServer
,启动后不要关闭cmd窗口
# cd到解压后的安装目录的bin文件夹
cd D:\rocketmq-all-5.3.3-bin-release\bin# 启动NameServer
mqnamesrv.cmd# 成功提示
The Name Server boot success. serializeType=JSON, address 0.0.0.0:9876
- 启动
Broker
,启动后不要关闭cmd窗口
# 启动Broker
mqbroker.cmd -n 127.0.0.1:9876 -c D:\Java\rocketmq-all-5.3.2-bin-release\rocketmq-all-5.3.2-bin-release\conf\broker.conf# 成功提示
The broker[broker-a, 172.16.60.33:10911] boot success. serializeType=JSON and name server is 127.0.0.1:9876
- 停止服务,直接关闭或者使用命令
mqshutdown.cmd broker
mqshutdown.cmd namesrv
二、搭建可视化控制台
- git下载项目:
https://github.com/apache/rocketmq-externals/tree/release-rocketmq-console-1.0.0
- 使用IDEA启动项目,注意JDK版本要使用1.8
- 如果连接提示:
org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to <172.16.60.33:10909> failed
解决:修改RocketMQ安装目录下conf文件夹下的broker.conf文件,添加borkerIP1=本机IP
重启时候,先启动namesrv,再启动消息服务器brokerbrokerClusterName = DefaultCluster brokerName = broker-a brokerId = 0 deleteWhen = 04 fileReservedTime = 48 brokerRole = ASYNC_MASTER flushDiskType = ASYNC_FLUSH namesrvAddr=127.0.0.1:9876 borkerIP1=192.168.226.188
- 直接访问,默认为8080端口
三、搭建测试服务
- 引入依赖
<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.3.1</version>
</dependency>
- 修改application.yml配置文件
# RocketMQ配置
rocketmq:name-server: 127.0.0.1:9876producer:name: platform-base-producergroup: platform-base-producer-groupsend-message-timeout: 3000 # 发送消息超时时间,单位毫秒retry-times-when-send-failed: 2 # 同步发送失败时重试次数retry-times-when-send-async-failed: 2 # 异步发送失败时重试次数
- 发送方
Component
public class SendController {@Resourceprivate RocketMQTemplate rocketMQTemplate;@Scheduled(cron = "1 15 18 * * ?")public void sendMessage(){for (int i = 0; i < 4; i++) {rocketMQTemplate.convertAndSend("test-topic", "Hello, World!" + i);}}
}
- 消费方
@Service
@RocketMQMessageListener(topic = "test-topic", consumerGroup = "demo-consumer-group")
class ConsumeService implements RocketMQListener<String> {@Overridepublic void onMessage(String message) {System.out.println("收到消息: " + message);}
}
- 查看生产与消费信息