RabbitMQ入门指南(一):初识与安装

前言

RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了消息队列、RabbitMQ简介及其安装步骤等内容。


一、消息队列介绍

1.同步调用和异步调用

同步调用:

同步调用是一种程序执行方式,它要求调用函数必须等待被调用的函数执行完毕后,才能继续执行后续代码。在同步调用中,调用方会阻塞等待被调用方的返回结果。这种方式在某些情况下可能会带来性能问题,因为它会占用计算资源,使得程序执行效率降低。

例如,在OpenFeign中,当一个服务调用另一个服务时,如果采用同步调用,那么调用方必须等待被调用方的服务响应后才能继续执行后续代码。这种等待可能会导致调用方的线程阻塞,从而降低程序的性能。

异步调用:

异步调用是一种程序执行方式,它允许调用函数在等待被调用的函数执行完毕的同时,继续执行后续代码。在异步调用中,调用方不会阻塞等待被调用方的返回结果,而是立即返回并继续执行后续代码。这种方式可以提高程序的效率,因为它可以释放计算资源,使得程序可以同时处理多个任务。

例如,在使用消息队列时,当一个消费者从队列中获取一个消息并处理它时,如果采用异步调用,那么消费者可以在等待消息处理完成的同时,继续从队列中获取其他消息进行处理。这种方式可以提高程序的并发性能,因为它可以同时处理多个消息,而不会因为某个消息的处理而阻塞整个程序。

2.常见消息队列介绍

RabbitMQ ActiveMQ RocketMQ Kafka
公司 Rabbit Apache Alibaba Apache
开发语言 Erlang Java Java Scala&Java
可用性 一般
单机吞吐量 一般 非常高
消息延迟 微秒级 毫秒级 毫秒级 毫秒以内
消息可靠性 一般 一般

二、RabbitMQ简介及其安装步骤

1.RabbitMQ简介

RabbitMQ是一个开源的消息队列软件,旨在提供可靠的消息传递和消息队列功能。它采用AMQP协议作为其主要的消息传递协议,并提供了丰富的特性,包括发布/订阅模式、消息持久化、消息路由和多种客户端库支持等。RabbitMQ被广泛应用于分布式系统、微服务架构和异步通信等场景。

官网地址:

rabbitmq.com

2.RabbitMQ安装步骤(使用Docker)

(1) 创建网络

在Docker中创建一个名为"mall"的网络。这个网络是新的桥接网络,允许容器之间进行通信。此外,该命令还可以控制哪些容器可以连接到该网络,从而帮助管理容器之间的通信并隔离不同服务的网络流量。

lua 复制代码
docker network create mall

运行图:

(2) 使用Docker来安装并启动RabbitMQ

在终端输入如下命令:

ini 复制代码
docker run \
 -e RABBITMQ_DEFAULT_USER=admin \
 -e RABBITMQ_DEFAULT_PASS=123456 \
 -v mq-plugins:/plugins \
 --name mq \
 --hostname mq \
 -p 15672:15672 \
 -p 5672:5672 \
 --network mall \
 -d \
 rabbitmq:3.12-management

具体参数的含义如下:

-e RABBITMQ_DEFAULT_USER=admin 设置RabbitMQ的默认用户名为admin
-e RABBITMQ_DEFAULT_PASS=123456 设置RabbitMQ的默认密码为123456
-v mq-plugins:/plugins 将主机的mq-plugins卷挂载到容器的/plugins目录,用于存放RabbitMQ插件
--name mq 指定容器名字为mq
--hostname mq 设置容器的主机名为mq
-p 15672:15672 将主机的15672端口映射到容器的15672端口,用于RabbitMQ的管理界面
-p 5672:5672 将主机的5672端口映射到容器的5672端口,用于RabbitMQ的AMQP协议
--network mall 将容器连接到名为mall的网络中
-d 在后台运行容器
rabbitmq:3.12-management 拉取并运行的镜像为RabbitMQ版本3.12,并带有管理界面插件

运行图:

列出当前服务器中所有的容器,无论是否在运行:

css 复制代码
docker ps -a

如下图表示容器正常启动:

若启动失败,请在启动Docker时添加参数'--privileged=true' (需要先删除之前那个容器)。

'--privileged=true'选项允许Docker容器享有主机的全部设备访问权限。这意味着,在容器内的进程将获得主机系统的权限,能够执行特权操作,例如挂载设备、修改网络配置等。使用该选项将增加容器的安全风险,因为容器内的进程可能会对主机系统执行更多的操作。因此,请谨慎使用'--privileged=true'选项。

ini 复制代码
docker run \
 --privileged=true \
 -e RABBITMQ_DEFAULT_USER=admin \
 -e RABBITMQ_DEFAULT_PASS=123456 \
 -v mq-plugins:/plugins \
 --name mq \
 --hostname mq \
 -p 15672:15672 \
 -p 5672:5672 \
 --network mall \
 -d \
 rabbitmq:3.12-management

运行图:

(3) 登录RabbitMQ管理控制台

访问http://10.0.0.100:15672/(将IP换为自己虚拟机的IP地址):

输入之前设置的用户名和密码进行登录,登录界面如下:


总结

RabbitMQ是一个开源的消息队列软件,旨在提供可靠的消息传递和消息队列功能。本文主要介绍了消息队列、RabbitMQ简介及其安装步骤等内容,希望对大家有所帮助。

相关推荐
搬码后生仔1 小时前
将 ASP.NET Core 应用程序的日志保存到 D 盘的文件中 (如 Serilog)
后端·asp.net
Suwg2091 小时前
《手写Mybatis渐进式源码实践》实践笔记(第七章 SQL执行器的创建和使用)
java·数据库·笔记·后端·sql·mybatis·模板方法模式
凡人的AI工具箱2 小时前
每天40分玩转Django:Django文件上传
开发语言·数据库·后端·python·django
spcodhu2 小时前
在 Ubuntu 上搭建 MinIO 服务器
linux·后端·minio
小码编匠2 小时前
2024 年各编程语言运行百万并发任务需多少内存?
java·后端·python
sin22013 小时前
springboot测试类里注入不成功且运行报错
spring boot·后端·sqlserver
努力的小雨3 小时前
灵感上线,云开发实现抽奖转盘是多么简单的一件事
后端
kirito学长-Java4 小时前
springboot/ssm网上宠物店系统Java代码编写web宠物用品商城项目
java·spring boot·后端
海绵波波1074 小时前
flask后端开发(9):ORM模型外键+迁移ORM模型
后端·python·flask
余生H4 小时前
前端Python应用指南(二)深入Flask:理解Flask的应用结构与模块化设计
前端·后端·python·flask·全栈