RabbitMQ搭建流程

it2026-01-03  9

RabbitMQ搭建流程

1 RabbitMQ搭建流程

1.1 简介

RabbitMQ是最受欢迎的开源消息中间件之一,在全球范围内被广泛应用。RabbitMQ是轻量级且易于部署的,能支持多种消息协议。RabbitMQ可以部署在分布式系统中,以满足大规模、高可用的要求。

1.2 相关概念

我们先来了解下RabbitMQ中的相关概念,这里以5种消息模式中的路由模式为例 ![640.png][1] ![640 (1).png][2]

1.3 安装及配置

接下来我们介绍下RabbitMQ的安装和配置,提供Windows和Linux两种安装方式。

一、Windows下的安装

安装Erlang,下载地址: http://erlang.org/download/otp_win64_21.3.exe

![640 (2).png][3]

安装RabbitMQ,下载地址: https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.14/rabbitmq-server-3.7.14.exe

![640 (3).png][4]

安装完成后,进入RabbitMQ安装目录下的sbin目录;

![640 (4).png][5]

rabbitmq-plugins enable rabbitmq_management

二、Linux下的安装

补充:安装docker

Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。 通过 uname -r 命令查看你当前的内核版本 uname -r

![微信图片_20201021142810.png][6]

使用 root 权限登录 Centos。确保 yum 包更新到最新。 sudo yum update 卸载旧版本(如果安装过旧版本的话) sudo yum remove docker docker-common docker-selinux docker-engine 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 sudo yum install -y yum-utils device-mapper-persistent-data lvm2

![微信图片_20201021142814.png][7]

设置yum源 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 可以查看所有仓库中所有docker版本,并选择特定版本安装 yum list docker-ce --showduplicates | sort -r

![微信图片_20201021143234.png][8]

安装docker sudo yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0 sudo yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce

![微信截图_20201021144408.png][9]

启动并加入开机启动 sudo systemctl start docker sudo systemctl enable docker 验证安装是否成功(有client和service两部分表示docker安装启动都成功了) docker version

![微信图片_20201021145016.png][10]

下载rabbitmq 3.7.15的Docker镜像;

docker pull rabbitmq:3.7.15

![微信图片_20201021145532.png][11]

使用Docker命令启动服务; docker run -p 5672:5672 -p 15672:15672 --name rabbitmq \ -d rabbitmq:3.7.15 进入容器并开启管理功能; docker exec -it rabbitmq /bin/bash rabbitmq-plugins enable rabbitmq_management

![640 (5).png][12]

开启防火墙便于外网访问。 firewall-cmd --zone=public --add-port=15672/tcp --permanent firewall-cmd --zone=public --add-port=5672/tcp --permanent firewall-cmd --reload

![微信图片_20201021145803.png][13]

2 RabbitMQ实现即时通讯

2.1 访问及配置

访问RabbitMQ管理页面地址,查看是否安装成功(Linux下使用服务器IP访问即可):http://localhost:15672/

![640 (6).png][14]

输入账号密码并登录,这里使用默认账号密码登录:guest guest

创建帐号并设置其角色为管理员:jiaxuan jiaxuan

![微信截图_20201021150241.png][15]

创建一个新的虚拟host为:/jiaxuan

点击jiaxuan 用户进入用户配置页面;

给jiaxuan 用户配置该虚拟host的权限;

至此,RabbitMQ的配置完成。

2.2 实例demo

在业务逻辑的异步处理,系统解耦,分布式通信以及控制高并发的场景下,消息队列有着广泛的应用。本项目基于Spring的AMQP模块,整合流行的开源消息队列中间件rabbitMQ,实现一个向rabbitMQ添加和读取消息的功能。并比较了两种模式:生产者-消费者模式和发布-订阅模式的区别。AMQP作为高级的消息协议,支持更多的消息路由和消息模式。


![1.png][16]

1.如上图所示:生产者消费者模型:添加了一个队列,并创建了两个消费者用于监听队列消息,当有消息到达时,两个消费者会交替收到消息。这一过程虽然不用创建交换机,但会使用默认的交换机,并用默认的直连(default-direct)策略连接队列;

![2.png][17]

2.如上图所示:发布订阅模型,添加两个队列,分别各用一个消费者监听,设置一个交换机,类型为广播(fanout),交换机会将收到的消息广播给所有相连的队列:

![3.png][18]

3.如上图所示:direct直连交换机通信模型,包括一个direct交换机,三个binding,两个队列,两个消费者监听器,消息只会被投入到routingkey一致的队列中 package boot.spring.config; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.DirectExchange; import org.springframework.amqp.core.Queue; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; //direct直连模式的交换机配置,包括一个direct交换机,两个队列,三根网线binding @Configuration public class DirectExchangeConfig { @Bean public DirectExchange directExchange(){ DirectExchange directExchange=new DirectExchange("direct"); return directExchange; } @Bean public Queue directQueue1() { Queue queue=new Queue("directqueue1"); return queue; } @Bean public Queue directQueue2() { Queue queue=new Queue("directqueue2"); return queue; } //3个binding将交换机和相应队列连起来 @Bean public Binding bindingorange(){ Binding binding=BindingBuilder.bind(directQueue1()).to(directExchange()).with("orange"); return binding; } @Bean public Binding bindingblack(){ Binding binding=BindingBuilder.bind(directQueue2()).to(directExchange()).with("black"); return binding; } @Bean public Binding bindinggreen(){ Binding binding=BindingBuilder.bind(directQueue2()).to(directExchange()).with("green"); return binding; } }

![4.png][19]

4.如上图所示:topic主题交换机通信,包括一个topic交换机,三个binding,两个队列,两个消费者监听器,消息只会被投入到routingkey能够匹配的队列中,#表示0个或若干个关键字,*表示一个关键字

项目地址

https://gitee.com/jiaxuan888/Spring-rabbitMQ [1]: http://www.jiaxuan.fun/usr/uploads/2020/10/4015902061.png [2]: http://www.jiaxuan.fun/usr/uploads/2020/10/1871174610.png [3]: http://www.jiaxuan.fun/usr/uploads/2020/10/4076108291.png [4]: http://www.jiaxuan.fun/usr/uploads/2020/10/1858776277.png [5]: http://www.jiaxuan.fun/usr/uploads/2020/10/1228638777.png [6]: http://www.jiaxuan.fun/usr/uploads/2020/10/1247084272.png [7]: http://www.jiaxuan.fun/usr/uploads/2020/10/2786654042.png [8]: http://www.jiaxuan.fun/usr/uploads/2020/10/3417177598.png [9]: http://www.jiaxuan.fun/usr/uploads/2020/10/4273336237.png [10]: http://www.jiaxuan.fun/usr/uploads/2020/10/1012872847.png [11]: http://www.jiaxuan.fun/usr/uploads/2020/10/2798510350.png [12]: http://www.jiaxuan.fun/usr/uploads/2020/10/964834818.png [13]: http://www.jiaxuan.fun/usr/uploads/2020/10/2251627655.png [14]: http://www.jiaxuan.fun/usr/uploads/2020/10/1572627538.png [15]: http://www.jiaxuan.fun/usr/uploads/2020/10/2585374982.png [16]: http://www.jiaxuan.fun/usr/uploads/2020/10/1905991702.png [17]: http://www.jiaxuan.fun/usr/uploads/2020/10/3676135689.png [18]: http://www.jiaxuan.fun/usr/uploads/2020/10/3583950452.png [19]: http://www.jiaxuan.fun/usr/uploads/2020/10/2696320686.png
最新回复(0)