1. RabbitMQ 的介绍
➢ 什么是 MQ?
MQ 全称为 Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。
➢ 要解决什么样的问题?
在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。

2. RabbitMQ 安装与使用
安装 RabbitMQ
1. 安装 Linux 以及必要的依赖包(Centos7)

1.准备
Linux系统的一些基本工具(安装简洁版Linux需要安装这些工具)
yum install lrzsz wget vim unzip net-tools -y
安装RabbitMQ所需要的依赖包
yum install gcc glibc-devel make ncurses-devel openssl-devel xmlto
2.下载安装包

wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.2/rabbitmq-server-3.7.2-1.el7.noarch.rpm
wget http://erlang.org/download/otp_src_19.3.tar.gz

2. 下载 RabbitMQ 的安装包

3.安装RabbitMQ
解压erlang 源码包
tar -zxvf otp_src_19.2.tar.gz(应该用这个tar -xvf otp_src_19.3.tar.tar 最终测应使用tar -vxf memcached-1.4.34.tar.gz)
手动创建erlang 的安装目录
mkdir /usr/local/erlang
进入erlang的解压目录
cd otp_src_19.3
配置erlang的安装信息
./configure --prefix=/usr/local/erlang --without-javac
编译并安装
make && make install
配置环境变量
vim /etc/profile
将这些配置填写到profile文件的最后
ERL_HOME=/usr/local/erlang
PATH=$ERL_HOME/bin:$PATH
export ERL_HOME PATH
启动环境变量配置文件
source /etc/profile
安装RabbitMQ
rpm -ivh --nodeps rabbitmq-server-3.7.2-1.el7.noarch.rpm

4.服务启动 rabbitmq-server start
这里可能会出现错误,错误原因是/var/lib/rabbitmq/.erlang.cookie文件不够
解决方案
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
chmod 400 /var/lib/rabbitmq/.erlang.cookie

启动之后界面:

3. 安装,修改相关配置

查看启动进程:
ps -ef | grep rabbit
5.使用浏览器登录RabbitMQ的管理平台:http://RabbitMQ服务器IP:15672
RabbitMQ默认情况无法直接访问管理平台
解决方案
添加管理台的插件(用于Web浏览器管理RabbitMQ)
rabbitmq-plugins enable rabbitmq_management 使用默认用户名guest登录
账号:guest
密码:guest
注意:这里guest只允许本机登录访问需要创建用户并授权远程访问命令如下 rabbitmqctl add_user root root
rabbitmqctl set_user_tags root administrator
rabbitmqctl set_permissions -p / root '.*' '.*' '.*'

打开浏览器,输入http://RabbitMQ服务器IP:15672

如果你能正常启动,却打不开RabbitMQ的管理平台,请检查防火墙是否关闭,centos7关防火墙:

centos从7开始默认用的是firewalld,这个是基于iptables的,虽然有iptables的核心,但是iptables的服务是没安装的。所以你只要停止firewalld服务即可:

sudo systemctl stop firewalld.service && sudo systemctl disable firewalld.service

1-4 RabbitMQ 核心概念

RabbitMQ 结构图

AMQP 核心概念
➢Server:又称 Broker 接收客户端的连接,实现 AMQP 实体服务
➢ Connection:链接,用于应用程序链接到 Broker
➢ Channel:网络通道,Channel 是进行消息读写的一个通道每一个 Channel 都表示一个会话,有点类似我们之前的Session 概念
➢Message:消息,消息就是我们真正用来进行传输的数据,Message 由两部分组成,Properties 和 Body,Properties用于对消息就行修饰,比如优先级或是否持久等,Body则是消息数据的主体
➢ Virtual host:虚拟地址,用于进行逻辑隔离,一个 Server拥有过多个 Vitual hsot,一个 Virual hsot 会拥有多个Exchange(交换机)和 Queue(队列)
➢ Exchange:交换机,用于具体接收消息并将消息根据绑定路由 key 存入到指定的队列中
➢ Binding:绑定,就是将 Exchange 和 Queue 链接在一起,通过一个 Routing key 进行绑定
➢ Routing key:路由规则,消息发送到 Exchang 后会根据这个规则将消息存入对应的 Queue
➢ Queue:队列也称 Message Queue 简称 MQ,用于存放消息,并使用队列的结构先进先出、后进后出

RabbiMQ 执行流程

最新文章

  1. 把CentOS 7.x网卡名称eno16777736改为eth0
  2. Dialog_ _dialog系统样式讲解 及 透明背景
  3. 31.从尾到头输出链表[Print linked list from last to first]
  4. 关于EasyUI与富文本编辑器结合使用的问题(kindueditor与uueditor)
  5. JqGrid自定义toolbar
  6. Shell 获取当前时间
  7. ASP.net gridview控件RowEditing,RowUpdating,RowDeleting,RowCancelingEdit事件的触发
  8. 腾讯云数据库团队:MySQL AHI 实现解析
  9. 事件驱动的Python实现
  10. Scala从入门到精通之四-映射和元组
  11. 基于iframe的移动端嵌套
  12. Vue深度学习(5)-过渡效果
  13. android DialogFragment 实现Dialog展示扫二维码图片展示
  14. react-conponent-todo
  15. Java集合(Collection)综述
  16. Linux 日志切割工具cronolog详解
  17. 命名空间“Microsoft.Office.Interop”中不存在类型或命名空间名称“Excel”。是否缺少程序集引用 的另一种解决方案
  18. 关于inherit的笔记
  19. BloomFilter——大规模数据处理利器[转]
  20. java程序控制KETTLE JOB的执行

热门文章

  1. BZOJ-1086 [SCOI2005]王室联邦 (树分块)
  2. 分层图最短路( LYOi Online Judge 初中的最后一天)
  3. Codeforces Global Round 8 B. Codeforces Subsequences(构造)
  4. Codeforces 1355 D. Game With Array
  5. codeforces644B. Processing Queries (模拟)
  6. POJ 1655 Balancing Act ( 树的重心板子题,链式前向星建图)
  7. JavaScript_继承
  8. shapefile 输出的地理处理注意事项(转载)
  9. woj1019 Curriculum Schedule 输入输出 woj1020 Adjacent Difference 排序
  10. 设置chromium的默认搜索引擎为Bing