目录
1、什么是MQ?为什么要用MQ?
2、MQ的优缺点
3、几大MQ产品特点比较
4.RocketMQ在Windows的启动
1.下载RocketMQ 4.7.1版本
2.解压到本地磁盘并配置好JAVA_HOME和ROCKETMQ_HOME
3.修改runserver.cmd
4.启动server
5.修改runbroker.cmd
6.启动broker
7.测试
5.配置可视化工具
1.下载
2.解压源码到本地
3.打包
浏览器打开localhost:8080
6.Centos 安装RocketMQ
1 启动NameServer
2 启动Broker
3 命令行快速验证
4 关闭RocketMQ服务
关于RabbitMQ 的安装及基本使用请看这两篇文章:
Windows下安装RabbitMQ_摸大鱼了的博客-CSDN博客关于RabbitMQ在windows 下的安装和基本设置步骤:安装对应版本的Erlang 并设置环境变量安装RabbitMQ并设置环境变量安装插件rabbitmq_management可视化插件。https://blog.csdn.net/csl12919/article/details/128420698RabbitMQ 基本使用_摸大鱼了的博客-CSDN博客MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。AMQP,即 Advanced Message Queuing Protocol(高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。2006年,AMQP 规范发布。类比HTTP。https://blog.csdn.net/csl12919/article/details/128434324
本篇介绍RocketMQ在windows的配置启动和Linux的配置启动。
1、什么是MQ?为什么要用MQ?
MQ:MessageQueue,消息队列。 队列,是一种FIFO 先进先出的数据结构。消息由生产者发送到MQ进行排队,然后按原来的顺序交由消息的消费者进行处理。QQ和微信就是典型的MQ。
MQ的作用主要有以下三个方面:
-
异步
例子:快递员发快递,直接到客户家效率会很低。引入菜鸟驿站后,快递员只需要把快递放到菜鸟驿站,就可以继续发其他快递去了。客户再按自己的时间安排去菜鸟驿站取快递。
作用:异步能提高系统的响应速度、吞吐量。
-
解耦
例子:《Thinking in JAVA》很经典,但是都是英文,我们看不懂,所以需要编辑社,将文章翻译成其他语言,这样就可以完成英语与其他语言的交流。
作用:
1、服务之间进行解耦,才可以减少服务之间的影响。提高系统整体的稳定性以及可扩展性。
2、另外,解耦后可以实现数据分发。生产者发送一个消息后,可以由一个或者多个消费者进行消费,并且消费者的增加或者减少对生产者没有影响。
-
削峰
例子:长江每年都会涨水,但是下游出水口的速度是基本稳定的,所以会涨水。引入三峡大坝后,可以把水储存起来,下游慢慢排水。
作用:以稳定的系统资源应对突发的流量冲击。
2、MQ的优缺点
上面MQ的所用也就是使用MQ的优点。 但是引入MQ也是有他的缺点的:
- 系统可用性降低
系统引入的外部依赖增多,系统的稳定性就会变差。一旦MQ宕机,对业务会产生影响。这就需要考虑如何保证MQ的高可用。
- 系统复杂度提高
引入MQ后系统的复杂度会大大提高。以前服务之间可以进行同步的服务调用,引入MQ后,会变为异步调用,数据的链路就会变得更复杂。并且还会带来其他一些问题。比如:如何保证消费不会丢失?不会被重复调用?怎么保证消息的顺序性等问题。
- 消息一致性问题
A系统处理完业务,通过MQ发送消息给B、C系统进行后续的业务处理。如果B系统处理成功,C系统处理失败怎么办?这就需要考虑如何保证消息数据处理的一致性。
3、几大MQ产品特点比较
常用的MQ产品包括Kafka、RabbitMQ和RocketMQ。我们对这三个产品做下简单的比较,重点需要理解他们的适用场景。
4.RocketMQ在Windows的启动
1.下载RocketMQ 4.7.1版本
RocketMQ下载地址: 下载 | RocketMQ
挑选自己的版本:
2.解压到本地磁盘并配置好JAVA_HOME和ROCKETMQ_HOME
新建JAVA_HONE环境变量(这里不再说)
新建ROCKETMQ_HOME环境变量:
电脑->属性->高级系统设置->环境变量->系统变量->新建:
自己解压的rocketmq位置
3.修改runserver.cmd
进入bin目录,修改runserver.cmd的JAVA_OPT为,大小可自己调整
rem set "JAVA_OPT=%JAVA_OPT% -server -Xms2g -Xmx2g -Xmn1g"
set "JAVA_OPT=%JAVA_OPT% -server -Xms256m -Xmx512m"
4.启动server
修改后进入bin目录,在cmd中输入start mqnamesrv.cmd
命令启动rocketmq的nameserver。
成功后出现以下界面:
如果出现闪退问题,可能是权限不够,使用管理员权限启动。
5.修改runbroker.cmd
修改runbroker.cmd的JAVA_OPT为,大小可自己调整
rem set "JAVA_OPT=%JAVA_OPT% -server -Xms2g -Xmx2g -Xmn1g"
set "JAVA_OPT=%JAVA_OPT% -server -Xms256m -Xmx512m"
6.启动broker
输入命令start mqbroker.cmd -n localhost:9876 -c ../conf/broker.conf autoCreateTopicEnable=true
启动broker
也可以双击.cmd直接启动.
(没有autoCreateTopicEnable=true
测试不了tools.cmd)
成功后会出现以下窗口
拿一个别人家的:
---------------------------------------------------------------
很郁闷,都快写完了,然后不知道怎么回事突然跳了一下,写好的博客就不能退回了。只能从这重新写
------------------------------------------
好了继续....
7.测试
在RocketMQ的安装包中,提供了一个tools.sh工具可以用来在命令行快速验证RocketMQ服务。我们在worker2上进入RocketMQ的安装目录:
首先需要配置一个环境变量NAMESRV_ADDR指向我们启动的NameServer服务。
然后启动消息生产者发送消息:默认会发1000条消息
D:\rocketmq-all-4.2.0-bin-release\bin 启动cmd
.\tools.cmd org.apache.rocketmq.example.quickstart.Producer
发送成功。
然后启动消息消费者接收消息:
.\tools.cmd org.apache.rocketmq.example.quickstart.Consumer
至此,完成。
5.配置可视化工具
1.下载
github下载地址:GitHub - apache/rocketmq-dashboard: The state-of-the-art Dashboard of Apache RoccketMQ provides excellent monitoring capability. Various graphs and statistics of events, performance and system information of clients and application is evidently made available to the user.
旧版本源码是在rocketmq-external里的rocketmq-console,新版本已经单独拆分成dashboard
2.解压源码到本地
3.打包
。在解压后的目录打开命令行窗口,执行:mvn clean package -Dmaven.test.skip=true,执行成功如图
mvn clean package -Dmaven.test.skip=true
要是运行报错就加上引号
mvn clean package "-Dmaven.test.skip=true"
这个运行了好久,无耐只能重新跑一下截个图 :
就不知道怎么回事就没有了。
不过这次快多了,第一次9分钟了。
java -jar 启动:
浏览器打开localhost:8080
完成!!!
新老包我都有上传,打包后资源下载地址:
https://download.csdn.net/download/csl12919/87355373https://download.csdn.net/download/csl12919/87355373
6.Centos 安装RocketMQ
RocketMQ的安装非常简单,就是上传解压就可以了。
然后我们准备一台CentOS7的Linux机器,快速把RocketMQ给运行起来。我使用的Linux版本如下:
[oper@worker1 jdk1.8]$ uname -a
Linux worker1 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
我们需要创建一个操作用户用来运行自己的程序,与root用户区分开。使用root用户创建一个oper用户,并给他创建一个工作目录。
[root@worker1 ~]# useradd oper
[root@worker1 ~]# passwd oper
设置用户密码
[root@worker1 ~]# mkdir /app
[root@worker1 ~]# chown oper:oper /app
运行RocketMQ需要先安装JDK。我们采用目前最稳定的JDK1.8版本。CentOS可以采用课件资料中的jdk-8u171-linux-x64.tar.gz,也可以自行去Oracle官网上下载。然后用FTP上传到oper用户的工作目录下。由oper用户解压到/app/jdk1.8目录下。
[oper@worker1 tools]$ tar -zxvf jdk-8u171-linux-x64.tar.gz
[oper@worker1 tools]$ mv jdk1.8.0_171/ /app/jdk1.8
配置环境变量。使用 vi ~/.bash_profile编辑文件,在下面加入以下内容:
export JAVA_HOME=/app/jdk1.8/
PATH=$JAVA_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
export PATH
编辑完成后,执行 source ~/.bash_profile让环境变量生效。输入java -version能查看到以下内容表明JDK安装成功了。
[oper@worker1 ~]$ java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
然后我们把下载的rocketmq-all-4.7.1-bin-release.zip在本地完成解压,并上传到/app/rocketmq目录。完成后,把rocketmq的bin目录也配置到环境变量当中。 vi ~/.bash_profile,加入以下内容,并执行source ~/.bash_profile让环境变量生效:
export JAVA_HOME=/app/jdk1.8/
export ROCKETMQ_HOME=/app/rocketmq/rocketmq-all-4.7.1-bin-release
PATH=$ROCKETMQ_HOME/bin:$JAVA_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
export PATH
这样RocketMQ就安装完成了。我们把他运行起来。
这个ROCKETMQ_HOME的环境变量是必须要单独配置的,如果不配置的话,启动NameSever和Broker都会报错。
这个环境变量的作用是用来加载$ROCKETMQ_HOME/conf下的除broker.conf以外的几个配置文件。所以实际情况中,可以不按这个配置,但是一定要能找到配置文件。
1 启动NameServer
启动NameServer非常简单, 在$ROCKETMQ_HOME/bin目录下有个mqnamesrv。直接执行这个脚本就可以启动RocketMQ的NameServer服务。
但是要注意,RocketMQ默认预设的JVM内存是4G,这是RocketMQ给我们的最佳配置。但是通常我们用虚拟机的话都是不够4G内存的,所以需要调整下JVM内存大小。修改的方式是直接修改runserver.sh。 用vi runserver.sh编辑这个脚本,在脚本中找到这一行调整内存大小为512M
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -
XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
然后我们用静默启动的方式启动NameServer服务:
nohup bin/mqnamesrv &
启动完成后,在nohup.out里看到这一条关键日志就是启动成功了。并且使用jps指令可以看到有一个NamesrvStartup进程。
Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS
collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and
will likely be removed in a future release.
The Name Server boot success. serializeType=JSON
2 启动Broker
启动Broker的脚本是runbroker.sh。。Broker的默认预设内存是8G,启动前,如果内存不够,同样需要调整下JVM内存。vi runbroker.sh,找到这一行,进行内存调整
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"
然后我们需要找到$ROCKETMQ_HOME/conf/broker.conf, vi指令进行编辑,在最下面加入一个配置:
autoCreateTopicEnable=true
然后也以静默启动的方式启动runbroker.sh
nohup ./mqbroker &
启动完成后,同样是检查nohup.out日志,有这一条关键日志就标识启动成功了。 并且jps指令可以看到一个BrokerStartup进程。
The broker[worker1, 192.168.232.128:10911] boot success. serializeType=JSON
3 命令行快速验证
在RocketMQ的安装包中,提供了一个tools.sh工具可以用来在命令行快速验证RocketMQ服务。我们在worker2上进入RocketMQ的安装目录:
首先需要配置一个环境变量NAMESRV_ADDR指向我们启动的NameServer服务。
export NAMESRV_ADDR='localhost:9876'
然后启动消息生产者发送消息:默认会发1000条消息
bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
然后启动消息消费者接收消息:
bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
启动后,可以看到消费到的消息。
而这个Consume指令并不会结束,他会继续挂起,等待消费其他的消息。我们可以使用CTRL+C停止该进程。
4 关闭RocketMQ服务
# 1.关闭NameServer
sh bin/mqshutdown namesrv
# 2.关闭Broker
sh bin/mqshutdown broker
至此。完成!!!!
今天不知道咋回事,每次贴代码都会跳转到顶部。
也不知道有没有人管。
先到这吧。
吓得我又点了下保存!