深入剖析 rabbitMQ(二)

简介: 在上篇关于消息队列的文章中,我们对 rabbitMQ 有过初步的介绍,本篇将将带你深入剖析 rabbitMQ 内部结构和使用。
2.2.3、Headers

headers 也是根据规则匹配, 相比 direct 和 topic 固定地使用 routing_key , headers 则是通过一个自定义匹配规则的消息头部类进行匹配。

在队列与交换器绑定时,会设定一组键值对规则,消息中也包括一组键值对( headers 属性),当这些键值对有一对, 或全部匹配时,消息被投送到对应队列。

此外 headers 交换器和 direct 交换器完全一致,但性能差很多,目前几乎用不到了。

85.jpg

2.2.4、Fanout

Fanout  类型交换器与上面几个不同,不管路由键或者是路由模式,会把消息发给绑定给它的全部队列,如果配置了 routing_key 会被忽略,也被成为消息广播模式。很像子网广播,每台子网内的主机都获得了一份复制的消息

fanout 类型转发消息在四种类型中是最快的。

86.jpg

三、RabbitMQ 安装

RabbitMQ 基于 erlang 进行通信,相比其它的软件,安装有些麻烦,为了跟生产环境保持一直,操作系统选择CentOS7,不过本例采用rpm方式安装,任何新手都可以完成安装,过程如下!

3.1、安装前命令准备

输入如下命令,完成安装前的环境准备。

yum install lsof  build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz wget vim

3.2、下载 RabbitMQ、erlang、socat 的安装包

本次下载的是RabbitMQ-3.6.5版本,采用rpm一键安装,适合新手直接上手。

先创建一个rabbitmq目录,本例的目录路径为/usr/app/rabbitmq,然后在目录下执行如下命令,下载安装包!

  • 下载erlang
wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm
  • 下载socat
wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
  • 下载rabbitMQ
wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm

最终目录文件如下:

87.jpg

3.3、安装软件包

下载完之后,按顺序依次安装软件包,这个很重要哦~

  • 安装erlang
rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm
  • 安装socat
rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm
  • 安装rabbitmq
rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm

安装完成之后,修改rabbitmq的配置,默认配置文件在/usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin目录下。

vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app

修改loopback_users节点的值!

88.jpg

最后只需通过如下命令,启动服务即可!

rabbitmq-server start &

运行脚本之后,如果报错,例如下图!

89.jpg

解决办法如下:

vim /etc/rabbitmq/rabbitmq-env.conf

在文件里添加一行,如下配置!

NODENAME=rabbit@localhost

然后,再保存!再次以下命令启动服务!

rabbitmq-server start &

通过如下命令,查询服务是否启动成功!

lsof -i:5672

如果出现5672已经被监听,说明已经启动成功!90.jpg

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
XML 前端开发 JavaScript
No40.精选前端面试题,享受每天的挑战和学习
No40.精选前端面试题,享受每天的挑战和学习
|
JavaScript
Vue————Vue v2.7.14 入口文件【二】
Vue————Vue v2.7.14 入口文件【二】
226 0
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的孩童收养信息管理附带文章和源代码设计说明文档ppt
基于ssm+vue.js+uniapp小程序的孩童收养信息管理附带文章和源代码设计说明文档ppt
117 2
|
存储 数据可视化 索引
Grafana 系列 - 统一展示 -7-ElasticSearch 数据源
Grafana 系列 - 统一展示 -7-ElasticSearch 数据源
|
数据处理 Python
🐭喂汁,用Python写个专属Markdown转换工具(中)
一直使用 Markdown 语法编写文章,然后用Markdown转换工具转换下
334 0
|
搜索推荐 算法 测试技术
【数据结构与算法】排序算法总结(下)
【数据结构与算法】排序算法总结(下)
【数据结构与算法】排序算法总结(下)
|
JavaScript
vue项目创建手把手教会绝不迷路(赞赞赞)
vue项目创建手把手教会绝不迷路(赞赞赞)
93 0
|
前端开发 安全 应用服务中间件
|
Python
Python 技术篇-使用pygame库展示界面添加图片不显示问题解决办法
Python 技术篇-使用pygame库展示界面添加图片不显示问题解决办法
588 0
Python 技术篇-使用pygame库展示界面添加图片不显示问题解决办法
|
存储 Linux 人机交互
合辑 | 学习python不可不知的开发者词条汇总之一:基础通识类
Python学习第一步——听懂专业名词。开发者词条来帮你!

热门文章

最新文章