RabbitMQ消息队列
消息队列:“消息队列”是在消息的传输过程中保存消息的容器。
消息队列使用场景及介绍:消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题
实现高性能,高可用,可伸缩和最终一致性架构
使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ
消息队列的应用场景:异步处理,应用解耦,流量削锋和消息通讯四个场景
详细解释详见https://blog.csdn.net/dj2008/arti cle/details/78872889
MQ特点:
MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取或者订阅队列中的消息。MQ和JMS类似,但不同的是JMS是SUN JAVA消息中间件服务的一个标准和API定义,而MQ则是遵循了AMQP协议的具体实现和产品。
好处:
在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。
MQ的使用场景:
别说固定式使用场景了,说的透彻一点,他就是服务器之间通信的。 好处1:降低了两台服务器之间的耦合,哪怕是一台服务器挂了,另外一台服务器也不会报错或者休克,反正他监听的是MQ,只要服务器恢复再重新连上MQ发送消息,监听服务器就能再次接收。 好处2:MQ作为一个仓库,本身就提供了非常强大的功能,例如不再是简单的一对一功能,还能一对多,多对一,自己脑补保险箱场景,只要有特定的密码,谁都能存,谁都能取。也就是说能实现群发消息和以此衍生的功能。 好处3:现在普遍化的持久化功能,当MQ挂掉可以存储在磁盘等下重启恢复。(需要设置) 三、专业术语介绍 1. 生产者:在现实生活中就好比制造商品的工厂,他们是商品的生产者。生产者只意味着发送。发送消息的程序称之为一个生产者。 2. 队列:rabbitMQ就像一个仓库,一个仓库里面可以有很多队列,每个队列才是服务器之间消息通信的载体。 3.消费者:消费者就好比是从商店购买或从仓库取走商品的人,消费的意思就是接收。消费者是一个程序,主要是等待接收消息。 4.交换器:在生产者和消息队列之间的交换器,功能类似于网络宽带的交换机,可以根据不同的关键字,将信息发送到不同的队列。 上图的E就是交换器,通过关键字绑定,如果生产者给的消息中指定类型是ERROR,就给队列1,如果是INFO或者WARN就给队列2。当然也可以一个关键字绑定两个队列。(INFO等字段自己可以定义,也可以用*,#来匹配。*(星号)表示一个单词#(井号)表示零个或者多个单词。比如ok.yes可以被ok.*匹配到) 5.临时队列:根据需求临时创建的一条队列,在断开连接后自动删除。 四、流程介绍 生产者发送一条消息给交换机——交换机根据关键字匹配到对应的队列——将消息存入队列——消费者从队列中取出消息使用。
RabbitMq:
是一个在AMQP基础上完成的,由内在高并发的erlanng语言开发,可复用的企业消系统。他遵循Mozilla Public License开源协议,用在实时的对可靠性要求比较高的消息传递上。
linux下安装RabbitMQ:
- 安装Erlang环境
1)安装GCC GCC-C++ Openssl等模块,安装过就不需要安装了
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
2)安装ncurses
yum -y install ncurses-devel
3)安装erlang环境
1. wget http://erlang.org/download/otp_src_18.2.1.tar.gz
2. tar xvfz otp_src_18.2.1.tar.gz
3. ./configure #有的人安装时需要进入到当前文件夹才可执行此命令
4. make install
- 安装RabbitMQ
- 下载rabbitmq-server-3.6.9.tar.xz
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.9/rabbitmq-server-generic-unix-3.6.9.tar.xz
- 对于下载xz包进行解压,首先先下载xz压缩工具:
yum install xz
- 对rabbitmq包进行解压:
tar -xvf rabbitmq-server-generic-unix-3.6.9.tar
- 随后移动至/usr/local/下 改名rabbitmq:
cp -r rabbitmq_server-3.6.9 /usr/local/rabbitmq
- 这种下载的方式解压后直接可以使用,无需再编译安装
进入到rabbit文件内,其命令文件存在于sbin文件夹下,因此需要将sbin文件夹的路径添加到PATH中:
vi /etc/profile
找到export行,在下面新增加一行 [应该是在最后一行]
添加如下命令
export PATH=/usr/local/rabbitmq/sbin:$PATH
执行source /etc/profile使得PATH路径更新,
rabbitMQ安装成功。
- 随后启用MQ管理方式:
1.rabbitmq-plugins enable rabbitmq_management #启动后台管理
2.rabbitmq-server -detached #后台运行rabbitmq
- 设置端口号,可供外部访问:
iptables -I INPUT -p tcp --dport 15672 -j ACCEPT
- 添加用户和权限
默认网页guest用户是不允许访问的,需要增加一个用户修改一下权限,代码如下:
添加用户:rabbitmqctl add_user admin admin #第一个admin是账号 第二个是密码
添加权限:rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
修改用户角色:rabbitmqctl set_user_tags admin administrator
然后就可以远程访问了,然后可直接配置用户权限等信息
参考网址https://blog.csdn.net/qq_34021712/article/details/72567786
启动和关闭命令:
① 到指定目录:cd /etc/init.d
② 停止:rabbitmq-server stop
③ 启动:rabbitmq-server start
④ 查看是否停止/启动成功:ps -ef |grep rabbitmq
Ps:如果上述命令不行,可以直接进入启动目录:cd /usr/local/rabbitmq/sbin
SpringBoot+RebbitMq 简单实现消息队列:
https://blog.csdn.net/zhuzhezhuzhe1/article/details/80454956