专栏导航
目录
前言
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: easy to use, flexible messaging and streaming — RabbitMQhttps://www.rabbitmq.com/
2.RabbitMQ安装步骤(使用Docker)
(1) 创建网络
在Docker中创建一个名为"mall"的网络。这个网络是新的桥接网络,允许容器之间进行通信。此外,该命令还可以控制哪些容器可以连接到该网络,从而帮助管理容器之间的通信并隔离不同服务的网络流量。
docker network create mall
运行图:
(2) 使用Docker来安装并启动RabbitMQ
在终端输入如下命令:
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,并带有管理界面插件 |
运行图:
列出当前服务器中所有的容器,无论是否在运行:
docker ps -a
如下图表示容器正常启动:
若启动失败,请在启动Docker时添加参数'--privileged=true' (需要先删除之前那个容器)。
'--privileged=true'选项允许Docker容器享有主机的全部设备访问权限。这意味着,在容器内的进程将获得主机系统的权限,能够执行特权操作,例如挂载设备、修改网络配置等。使用该选项将增加容器的安全风险,因为容器内的进程可能会对主机系统执行更多的操作。因此,请谨慎使用'--privileged=true'选项。
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简介及其安装步骤等内容,希望对大家有所帮助。