赞
踩
MQ(Message Queue)即消息队列,我们知道队列是基础数据结构中“先进先出”的一种数据结构。消息队列一般用来解决应用解耦,异步消息,流量削峰等问题,实现高性能,高可用,可伸缩和最终一致性架构。
解耦:减少系统关联性,mq作为中间件接受消息并等待消费,例如有两个系统,系统B需要用到系统A发送的数据,可以使用MQ作为中间件,A将消息发送给消息队列,B从消息队列取消息,避免AB之间直接接触耦合死(如果某天B不要A的数据咱是不是得删代码,容易秃头)
异步:消息发送和消息消费可以不同时进行,两个系统无直接关联
流量削峰:某一时间段流量访问过大时如果没有中间件,数据大量涌入并入库,系统承受不住噶了,mq作用能缓解该情况,当访问过大,可将请求缓存到mq,消费方再逐步从mq缓存中拉取请求让系统平稳运行。
可用性降低:要使用mq就得引入,不能凭空捏造,依赖引入过多稳定性必然降低
复杂度提高:引入mq虽然解决了大部分头疼的问题(耦合,异步等),但是较同步调用相比,可能存在消息丢失,消息发送重复,消息传递顺序性无法保证
一致性问题:假如A系统要发送消息给B,C,D三个系统,当B,C两系统取到消息并处理成功但是D系统失败了,一致性问题就无法保证
可用性问题:mq如果噶了,可用性也会降低
RocketMQ是由阿里捐赠给Apache的一款低延迟、高并发、高可用、高可靠的分布式消息中间件。RocketMQ既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。
百度网盘(包含jdk,rocketmq)--》链接
或者关注上篇博客
详见博客--》linux安装jdk_小姚zhua你一大窝jio的博客-CSDN博客
下载好复制到虚拟机
我是新建了一个tools文件夹保存,
然后通过unzip rocketmq-all-4.9.2-bin-release.zip 解压 得到一个蓝色同名文件夹 我名字改成了rockertmq
看下结构
benchmark:放了一些demo可直接运行
bin:里边就是可执行文件 我们主要用到的也是这个
conf:配置文件
lib:依赖的第三方jar包放在这里边
启动前先修改bin下配置文件,默认内存有点大容易启动不起来
runbroker.sh
runserver.sh
默认可能时4G或8G改小一点
我的虚拟机内存才1G可根据自己内存大小调整
两边改好 即可
进入bin目录
输入命令
如果当前在bin目录执行 nohup sh mqnamesrv & (后台启动)
在bin上一层目录执行 nohup sh bin/mqnamesrv & (后台启动)
也是在该目录下
nohup sh mqbroker -n localhost:9876 & (先启动nameserver 再启动这个 默认端口9876)
jps查看
现在两边都启动好了
关闭命令 sh mqshutdown namesrv
sh mqshutdown broker
默认两服务已开启,开启两个dos 且都进入到bin目录
第一个窗口
配置临时环境变量
export NAMESRV_LINSHI=localhost:9876
使用安装包的demo发送消息
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
第二个窗口
export NAMESRV_LINSHI=localhost:9876
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。