SpringBoot整合RabbitMQ消息队列-学习笔记

这篇博客详细记录了作者学习RabbitMQ的过程,包括RabbitMQ的安装、设置和基本概念,如交换机、队列、虚拟主机。通过SpringBoot项目介绍了Direct、Topic、Fanout三种交换机的使用,并探讨了消息的确认机制。提供了完整的代码示例链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本篇文章主要用于记录个人学习RabbitMQ的过程,记录下来方便日后查看,如有错误的地方,还望指正。

本篇文章比较详细地记录本人在学习过程中的每一个步骤,比较适合对RabbitMQ不熟的同学学习,跟着本文操作一遍,就可以大概知道RabbitMQ的基础知识了。

准备阶段

首先把RabbitMQ环境安装好,下面再详细介绍RabbitMQ各个知识点和如何使用。

由于是基于Centos7的操作系统安装RabbitMQ-3.7.7。

为了方便操作,先把防火墙干掉,生产环境当然不能这么干,个人学习随意,以下是相关命令:

centos7关闭并禁止防火墙启动命令:

systemctl stop firewalld
systemctl disable firewalld

RabbitMQ安装

这里介绍一种比较简单的安装方法-依赖安装,不用单独安装erlang等依赖。

首先到RabbitMQ官网下载:http://www.rabbitmq.com/download.html,

选择合适你的操作系统版本,本人的操作系统是Centos7.5,所以选择RHEL/CentOS 7.x这个。

把下载好的rabbitmq-server-3.7.7-1.el7.noarch.rpm放到/home目录,由于RabbitMQ-3.7.7需要安装比较新的erlang-v19.3以上,而yum上并没有这么高的版本,所以需要在/etc/yum.repos.d/目录下创建文件rabbitmq-erlang.repo,命令如下:

cd /etc/yum.repos.d/
touch rabbitmq-erlang.repo

编辑rabbitmq-erlang.repo命令如下:

vi rabbitmq-erlang.repo

添加以下内容到rabbitmq-erlang.repo:

[rabbitmq-erlang] 
name=rabbitmq-erlang 
baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/21/el/7/ 
gpgcheck=1 
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc 
repo_gpgcheck=0 
enabled=1 

上面baseurl是指向erlang-v21版本的链接。

 

cd到/home目录,执行安装RabbitMQ的命令:

yum install -y rabbitmq-server-3.7.7-1.el7.noarch.rpm

这个过程会下载安装依赖的erlang等依赖,等待安装完成,会出现下面的界面,则说明RabbitMQ就已经安装完成了。

Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : erlang-21.0.5-1.el7.centos.x86_64                                                                                                                                                              1/3 
  正在安装    : socat-1.7.3.2-2.el7.x86_64                                                                                                                                                                     2/3 
  正在安装    : rabbitmq-server-3.7.7-1.el7.noarch                                                                                                                                                             3/3 
  验证中      : socat-1.7.3.2-2.el7.x86_64                                                                                                                                                                     1/3 
  验证中      : rabbitmq-server-3.7.7-1.el7.noarch                                                                                                                                                             2/3 
  验证中      : erlang-21.0.5-1.el7.centos.x86_64                                                                                                                                                              3/3 

已安装:
  rabbitmq-server.noarch 0:3.7.7-1.el7                                                                                                                                                                             

作为依赖被安装:
  erlang.x86_64 0:21.0.5-1.el7.centos                                                                         socat.x86_64 0:1.7.3.2-2.el7                                                                        

完毕!

RabbitMQ设置

启动RabbitMQ服务:

service rabbitmq-server start

刚安装好的RabbitMQ是还没有用户的,也不能访问RabbitMQ的web管理后台,接下来先添加一个叫root的用户:

rabbitmqctl add_user root root 
rabbitmqctl set_user_tags root administrator
rabbitmqctl set_permissions -p / root "." "." ".*"


#更多命令查看:rabbitmqctl --help 

启用web访问权限:

rabbitmq-plugins enable rabbitmq_management

重启RabbitMQ服务:

service rabbitmq-server restart

然后在浏览器输入:http://ip:15672/ ,这时可以看到RabbitMQ管理页面了,输入刚刚添加的账号root,密码root即可进入。

登录进去后界面如下:

RabbitMQ是基于Virtual Host来进行权限控制的,现在为我们刚刚添加的root用户添加一个Virtual Host,在RabbitMQ的web管理后台,根据下图进行添加一个virtual host,添加成功后默认分配给root用户了。

 

RabbitMQ简介

    RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种语言平台的客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

通常我们谈到消息队列, 会有三个概念: 消息生产者(Provider)、队列(Queue)、消息消费者(Consumer),RabbitMQ 在这个基本概念上, 多做了一层抽象, 在消息生产者和队列之间, 加入了交换器 (Exchange)。这样消息生产者和队列就没有直接联系, 变成消息生产者把消息发送给交换器, 交换器根据调度策略再把消息发送给队列。

  1. 左侧P代表消息生产者,也就是往RabbitMQ发消息的程序。
  2. 中间即是RabbitMQ,其中包括交换机(Exchange)和队列(Queue)。
  3. 右侧C代表消费者,也就是往RabbitMQ拿消息的程序。

其中比较重要的概念有:虚拟主机(Virtual Host)、交换机(Exchange)、队列(Queue)、绑定(Binding)。

虚拟主机(Virtual Hosts)

        在上面已经说明如何为一个用户创建一个Virtual Host,一个虚拟主机持有一组交换机、队列和绑定。在RabbitMQ当中,用户只能在虚拟主机这个粒度上进行权限的控制。 如果需要禁止A组访问B组的交换机/队列/绑定,必须为A和B分别创建一个虚拟主机。每一个RabbitMQ服务器都有一个默认的虚拟主机“/”。

交换机(Exchange)

        交换机的功能主要是接收消息并且根据转发策略转发到对应的队列,交换机不存储消息,在启用ack模式后,交换机找不到队列会返回错误,这个ack模式后面再详细讨论。交换机有四种类型:Direct, topic, Headers and Fanout

队列(Queue)

        队列用于存放消息的载体,一般是和交换机进行绑定,交换机根据转发策略把消息转发到队列里。

绑定(Binding)

        也就是交换机需要和队列相绑定,这其中如上图所示,是多对多的关系。

 

交换机类型介绍

    Direct Exch

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值