1.相关概念
消息队列:(MQ:message queue) 一种用来保存消息数据的队列
1.1角色:
生产者(producer)生产并发消息的一方
消费者(consumer):接受使用消息的一方
代理服务器(broker):临时保存生产者发送消息的服务器
1.2 作用
1.解耦(多业务系统,系统之间关联性没那么大)
2.异步(多业务系统,相互隔离)
3.削峰(qms)
重点:异步。所有的实现都是基于异步这样一个大的前提
1.3 缺点
1.系统复杂度提升
2.系统可用性降低
3.异步消息机制
1.消息顺序性
2.消息丢失
3、消息重复消费
4.消息一致性
1.4 MQ产品
1.5 RocketMQ 角色概念
1.消息生产者:producer
2.消息服务器:broker
3.消息消费者: conumer
4.监听器监听broker,消费者监听brker,有消息就消费
5.偏移量 offset :消费者需要从代理服务器中获取消息,消费使用;消费后并没有删除,而是打了一个标签;偏移量记录的就是所有已经消费过的数据的编码
6.命名服务器NameServer,统筹管理钱三个角色
1>broker将自己注册进NameServer
2>producer、conumer通过其获取broker信息然后发送、接受消息
3>命名服务器NameServer通过心跳检测确认producer、conumer、broker上下线(三个向NameServer 30S发送心跳)
7.消息组成: 消息体(body)、主题(Topic)、标签(tag子主题)
8.broker组成:内涵多个不同主题(To'pi'c)、每个topic包含多个队列(默认4个)
1.6 安装
Java8以上、centos系统
关闭防火墙,以免有多余的操作,开放端口啥的
systemctl status firewalld
systemctl stop firewalld
下载并上传服务器
https://rocketmq.apache.org/download/#rocketmq-grpc-client-java-sdk
解压
unzip rocketmq-all-5.0.0-bin-release.zip
查看解压后文件
1.7搭建NameServer
修改jvm参数
在启动NameServer之前,强烈建议修改一下启动时的jvm参数,因为默认的参数都比较大,为了避免内存不够,建议修改小,当然,如果你的内存足够大,可以忽略。
vi bin/runserver.sh
-server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=32m -XX:MaxMetaspaceSize=50m
启动NameServer
nohup sh bin/mqnamesrv &
搭建Broker
修改jvm参数
跟启动NameServer一样,也建议去修改jvm参数
vi bin/runbroker.sh
-server -Xms1g -Xmx1g -Xmn512m
配置broker配置文件
vi conf/broker.conf
namesrvAddr = localhost:9876
brokerIP1 = 192.168.129.159
brokerIP2 = 192.168.129.159
启动broker,进入对应文件夹内
nohup sh bin/mqbroker -c conf/broker.conf &
-c 参数就是指定配置文件
因为 RocketMQ 是java写的,可以在控制台直接查看
搭建 可视化工具
其实就是一个springboto jar包,传输到linux 直接部署运行即可
https://github.com/apache/rocketmq-externals
直接访问: http://192.168.159.129:8080/ (服务器IP地址:8080)