深入剖析 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
相关文章
|
2月前
|
消息中间件 网络性能优化 API
一文带大家快速掌握RabbitMQ!(三)
一文带大家快速掌握RabbitMQ!
|
6月前
|
消息中间件 网络协议 API
rabbitmq
rabbitmq
52 2
|
7月前
|
消息中间件 Java 中间件
一、RabbitMQ介绍
一、RabbitMQ介绍
137 0
|
7月前
|
消息中间件 存储 自然语言处理
|
消息中间件 Java 关系型数据库
简单讲解RabbitMQ
简单讲解RabbitMQ
52 1
|
消息中间件 存储 数据库
RabbitMQ特殊应用
RabbitMQ特殊应用
75 0
|
消息中间件 存储
RabbitMq
RabbitMq
135 0
|
消息中间件 存储 JSON
关于RabbitMQ
MQ是一种应用程序键一步通讯的技术,MQ是消息队列的缩写(Message Queue) 在MQ中,消息由一个应用程序发送到一个称为队列的中间件中,接着被中间件存储,并最终被另一个或多个消费者应用程序读取和处理; MQ组成:消息——生产者——队列——中间件——消费者!
80 0
|
消息中间件 存储 Java
RabbitMq使用
RabbitMq使用
148 0
|
消息中间件 Java
RabbitMQ(2)
RabbitMQ(2)