消息队列有:
activeMq、rabbitmq、rocketmq、kafka
根据资料显示从性能和实战中rocketmq 相对来说比较有优势,首先rocketmq是java语言开发方便java工程师二次开发,activemq也是java,他的优势是发展历程比较久,相关资料文献比较完备,但是对于并发量和分布式的业务处理,出自阿里的rocketmq更胜一筹。(黑马教程视频截图)
总结rocketmq就是:
优点:解耦、削峰(削弱瞬时并发对服务器的压力)、数据分发
缺点:
系统可用性降低。一点MQ宕机,就会对业务造成影响
如何保证MQ的高可用?
系统复杂度提高。由服务之间远程同步到现在通过MQ进行异步调用
如何保证消息没有被重复消费?
怎么处理消息丢失?
怎么保证消息传递的顺序性?
一致性问题。
如mq给A、B、C三个系统发送消息。如果BC处理成功,A处理失败,怎么保证消息数据处理的一致性?
安装
Release Notes - Apache RocketMQ - Version 4.9.1 - Apache RocketMQ
或者
wget https://archive.apache.org/dist/rocketmq/4.6.0/rocketmq-all-4.6.0-bin-release.zip
下载二进制文件(根据需要下载即可)
将下载的zip包上传到服务器使用命令解压:
unzip rocketmq-all-4.9.1-bin-release.zip
启动nameserv,进入到bin目录下:
nohup sh ./mqnamesrv &
# 查看启动日志
tail -f ~/logs/rocketmqlogs/namesrv.log
启动broken
nohup sh ./mqbroker -n localhost:9876 &
#查看启动日志
修改mq启动占用内存,mq默认启动占用为8G,根据实际需求修改
vim runbroker.sh
vim runserver.sh
关闭:
mqshutdown broker
mqshutdown namesrv
测试mq消息
# 开启两个窗口
# 临时环境变量,窗口1
export NAMESRV_ADDR=localhost:9876
sh ./tools.sh org.apache.rocketmq.example.quickstart.Producer #生产消息
# 窗口2
export NAMESRV_ADDR=localhost:9876sh ./tools.sh org.apache.rocketmq.example.quickstart.Consumer # 消费消息
待续。。。