Linux 下 RabbitMQ 的安装及使用

https://www.cnblogs.com/rmxd/p/11583932.html#_label0_1open in new window

Linux 下 RabbitMQ 的安装及使用open in new window

目录


过多的描述就不扯了,本文主要记录 RabbitMQ 的安装以及简单使用。本次安装是为了实现 spring cloud 的消息总线:SpringCloud 全家桶学习之消息总线---SpringCloud Busopen in new window

回到顶部open in new window

一、RabbitMQ 安装

1.下载 Erlang 的 rpm 包

RabbitMQ 是 Erlang 语言编写,所以 Erang 环境必须要有,注:Erlang 环境一定要与 RabbitMQ 版本匹配:https://www.rabbitmq.com/which-erlang.htmlopen in new window

Erlang 下载地址:https://www.rabbitmq.com/releases/erlang/open in new window(根据自身需求及匹配关系,下载对应 rpm 包)

2.下载 RabbitMQ 的 rpm 包

RabbitMQ 下载地址:https://www.rabbitmq.com/releases/rabbitmq-server/open in new window(根据自身需求及匹配关系,下载对应 rpm 包)

3.下载 socat 的 rpm 包

rabbitmq 安装依赖于 socat,所以需要下载 socat。

socat 下载地址:http://repo.iotti.biz/CentOS/6/x86_64/open in new windowsocat-1.7.3.2-1.el6.lux.x86_64.rpmopen in new window

根据自身需求下载对应系统 socat 依赖:(http://repo.iotti.biz/CentOS/open in new window)

4.分别安装 Erlang、Socat、RabbitMQ(一定按照顺序!)

一定按照以下顺序安装:

①rpm -ivh erlang-18.3-1.el6.x86_64.rpm

②rpm -ivh socat-1.7.3.2-1.el6.lux.x86_64.rpm

③rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm

5.配置 rabbitmq:vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app

6.安装管理插件:rabbitmq-plugins enable rabbitmq_management

6.启动 RabbitMQ,浏览器访问:http://192.168.64.128:15672/open in new window,出现以下界面说明安装完成!

①cd /usr/lib/rabbitmq/bin

②./rabbitmq-server start

回到顶部open in new window

二、RabbitMQ 的 5 种模式

1、简单模式(一对一的发送)

① 生产者发送消息给交换机

② 交换机接收消息,如果交换机没有绑定队列,消息扔进垃圾桶

③ 队列接收消息,存储在内存,等待消费者连接监听获取消息,消费成功后,返回确认

一些场景:短信,QQ

2、工作模式(资源的争抢)

① 生产者将消息发送给交换机

② 交换机发送给绑定的后端队列

③ 一个队列被多个消费者同时监听,形成消息的争抢结构:根据消费者所在的系统的空闲、性能争抢队列中的消息

一些场景:抢红包

3、发布订阅(交换机类型为 fanout)

注:图中未画消费者

① 交换机定义类型为:fanout

② 交换机绑定多个队列

③ 生产者将消息发送给交换机,交换机复制同步消息到后端所有的队列中

一些场景:邮件群发

4、路由模式(交换机类型:direct)

① 交换机定义类型为:direct

② 交换机绑定多个队列,队列绑定交换机时,给交换机提供了一个 routingkey(路由 key)

③ 发布订阅时,所有 fanout 类型的交换机绑定后端队列用的路由 key 都是“”;在路由模式中需要绑定队列时提供当前队列的具体路由 key

一些场景:错误消息的接收和提示

5、主题模式(交换机类型:topic)

① 交换机定义类型为:topic

② 交换机绑定多个队列,与路由模式非常相似,做到按类划分消息

③ 路由 key 队列绑定的通配符如下:#表示任意字符串,*表示没有特殊符号(单词)的字符串

Last Updated:
Contributors: 刘荣杰