rabbitmq学习篇
这里写目录标题
前言
rabbitmq是目前比较火的mq产品,用途广泛。
一、rabbitmq是什么?
rabbitmq是一个基于Erlang语言开发的mq产品。
二、优点
1高可用高并发的优点,适合集群服务器
2开源
3支持多语言
4可以持久化,有消息确认机制,可靠性高
三:缺点
1erlang语言开发不好定制
2吞吐量一般
3消息堆积影响性能
四、rabbitmq介绍
1.虚拟主机 virtual host
虚拟主机t相当于一个迷你的相对独立的rabbitmq服务器,每一个虚拟主机都有AMQP的全套基础组件,并且可以针对每个虚拟主机进行权限以及数据分配,不同虚拟主机之间是隔离的。
2.连接 Connection
客户端与RabbitMQ进行交互,需要建立一个TPC连接,这个连接就是Connection。
3信道channel
客户端与RabbitMQ实际进行数据交互的通道,一旦客户端与RabbitMQ建立了连接,就会分配一个AMQP信道 Channel。每个信道都会被分配一个唯一的ID。不同channel之间互相隔离。RabbitMQ为了减少性能开销,也会在一个Connection中建立多个Channel,这样便于客户端进行多线程连接,
这些连接会复用同一个Connection的TCP通道。
4交换机Exchange
交换机是rabbitmq中进行数据路由的重要组件,消息进入rabbitmq后,会先进入交换机,然后由交换机把数据分发到不同的队列中。不同的交换机支持不同的分发信息策略。每个虚拟主机中,RabbitMQ都会默认创建几个不同类型的交换机。
常用的交换机
1direct Exchange(直接交换机)
匹配路由键,只有完全匹配消息才会被转发
2Fanout Excange(扇形交换机)
将消息发送至所有的队列
3Topic Exchange(主题交换机)
在队列绑定到 top 交换机上的路由key 可以是通过通配符来匹配;
其中 “*” 用于匹配一个单词,“#”用于匹配多个单词
4.Header Exchange
在绑定Exchange和Queue的时候指定一组键值对,header为键,根据请求消息中携带的header进行路由
5队列Queue
队列是实际保存消息的最小单位,队列的特性是先进先出。
6可以参照下图来理解
五、linux环境下安装rabbitmq
1 安装Erlang语言包
RabbitMQ是基于Erlang语言开发,所以安装前需要安装Erlang语言环境。
需要注意下的是RabbitMQ与ErLang是有版本对应关系的。
3.9.15版本的RabbitMQ只支持23.2以上到24.3版本的Erlang。
Linux上的安装稍微复杂,需要有非常多的依赖包。简单起见,
可以下载rabbitmq提供的zero dependency版本。下载地址 https://github.com/rabbitmq/erlang-rpm/releases
下载完成后,可以尝试使用下面的指令安装:
rpm -ivh erlang-23.2.7-1.el7.x86_64.rpm
报错需要安装 libcrypto.so.10(OPENSSL_1.0.2)(64bit)
下载地址:https://rpmfind.net/linux/rpm2html/search.php?query=libcrypto.so.10%28OPENSSL_1.0.2%29%2864bit%29&submit=Search%20…&system=&arch=
下载最后一个
命令:rpm -ivh openssl-libs-1.0.2k-19.el7.x86_64.rpm --force
然后:
2安装rabbitmq
安装RabbitMQ:RabbitMQ的安装方式有很多,我们采用RPM安装包的方式。安装包可以到github仓库中下载发布包。下载地址:https://github.com/rabbitmq/rabbitmq-server/releases
命令:rpm -Uvh rabbitmq-server-3.9.15-1.el7.noarch.rpm
安装完成后,可以查看下他的安装情况
命令:whereis rabbitmqctl启动RabbitMQ服务
命令:service rabbitmq-server start
查看服务状态
命令:service rabbitmq-server status
其他常用的启停操作:
rabbitmq-server -deched
–后台启动服务
rabbitmqctl start_app
–启动服务
rabbitmqctl stop_app
–关闭服务
配置下打开他的Web管理页面:rabbitmq-plugins enable rabbitmq_management
关闭防火墙:systemctl stop firewalld
可以看到页面了。这时,可以使用默认的guest/guest用户登录。
但是注意下,默认情况下,只允许在localhost本地登录,
远程访问是无法登录的。这时,可以创建一个管理员账户来登录。
命令:rabbitmqctl add_user admin admin
rabbitmqctl set_permissions -p / admin “.” “.” “.*”
rabbitmqctl set_user_tags admin administrator
安装成功