SpringCloud系列教程:微服务的未来(二十二)RabbitMQ安装部署、快速入门、数据隔离

前言

在现代分布式系统中,消息队列(Message Queue)扮演着重要角色。RabbitMQ作为一个广泛使用的消息中间件,它不仅提供了高效、可靠的消息传递机制,还具备丰富的特性,如消息持久化、消息确认、消费者负载均衡等。本文将介绍RabbitMQ的安装与部署过程,帮助开发者快速上手,并探讨如何实现数据隔离,以满足不同应用场景的需求。


RabbitMQ

安装部署

基于Docker部署RabbitMQ,使用如下命令:

java 复制代码
docker run \
 -e RABBITMQ_DEFAULT_USER=root \
 -e RABBITMQ_DEFAULT_PASS=1234 \
 -v mq-plugins:/plugins \
 --name mq \
 --hostname mq \
 -p 15672:15672 \
 -p 5672:5672 \
 --network hgq\
 -d \
 rabbitmq:3.8-management

如果加载镜像缓慢可以直接加载镜像压缩包:

java 复制代码
docker load -i 压缩包名称

安装命令中有两个映射的端口:

  • 15672:RabbitMQ提供的管理控制台的端口
  • 5672:RabbitMQ的消息发送处理接口

RabbitMQ官网:https://www.rabbitmq.com/

访问http://192.168.244.135:15672其中界面的账号和密码在docker运行命令中已设置,分别为root、1234,登陆后界面如下

基本介绍

RabbitMO的整体架构及核心概念:

  • virtual-host:虚拟主机,起到数据隔离的作用。
  • publisher:消息发送者
  • consumer:消息的消费者
  • queue:队列,存储信息
  • exchange:交换机,负责消息路由。

快速入门

需求:在RabbitMQ的控制台完成下列操作

  • 新建队列hello.queue1和hello.queue2
  • 向默认的amp.fanout交换机发送一条消息
  • 查看消息是否到达hello.queue1和hello.queue2
  • 总结规律

新建队列需要在Queues选项卡中填写对应的Name,然后直接点击Add queue按钮即可。

打开Exchanges选项卡,可以看到已经存在很多交换机:

选择amq.fanout进入,利用控制台中的publish message 发送一条消息:


消息是发送成功了,但是由于没有消费者的存在,最终消息丢失了,交换机自身没有存储信息的功能。

其中Exchange选项卡选择amq.fanout进入详情在Buildings里面可以绑定队列关系

填写对应的queue名称,然后点击Bind按钮即可,将hello.queue1、hello.queue2斗鱼amq.fanout绑定。

此时再次进入Publish message发送消息

消息发送的注意事项:

  • 交换机只能路由消息,无法存储消息
  • 交换机只会路由消息给与其绑定的队列,因此队列必须与交换机绑定

数据隔离

需求:在RabbitMQ的控制台完成下列操作:

  • 新建一个用户hmall
  • 为hmall用户创建一个virtual host
  • 测试不同virtualhost之间的数据隔离现象

点击Admin选项卡,会看到RabbitAQ的用户管理界面:

点击右侧的Virtual Hosts可进入虚拟主机管理

添加用户有3个必填项,分别为Username、Password、确认密码。还有一栏是Tags表示用户角色

新创建的用户是还没未分配虚拟主机的

因此用hmall登录后获取hello.queueq的消息会失败。在Queues选项卡选择hello.queue1,进入点击Get message按钮即可。

创建自己的虚拟主机/hmall,只需输出虚拟主机名称点击Add virtual host按钮即可,并且创建出来的虚拟主机直接属于hmall用户。


总结

本文详细介绍了RabbitMQ的安装部署过程,提供了简单易行的快速入门指南,并探讨了数据隔离的实现方式。在实际应用中,通过合理配置RabbitMQ,可以提高系统的扩展性、可靠性和可维护性。掌握这些基本技能后,开发者可以充分发挥RabbitMQ的优势,为分布式系统设计提供强有力的支持。

相关推荐
翰林小院2 小时前
【RabbitMQ】 RabbitMQ Overview
分布式·rabbitmq
一个尚在学习的计算机小白8 小时前
RabbitMQ
分布式·rabbitmq
n8n13 小时前
RocketMQ 与 RabbitMQ 全面对比:架构、性能与适用场景解析
rabbitmq·rocketmq
老友@21 小时前
集中式架构、分布式架构与微服务架构全面解析
分布式·微服务·架构·系统架构
Jabes.yang1 天前
Java求职面试实战:从Spring Boot到微服务架构的技术探讨
java·数据库·spring boot·微服务·面试·消息队列·互联网大厂
smilecold1 天前
SpringCloud 入门 - Gateway 网关与 OpenFeign 服务调用
spring cloud·gateway
Logintern091 天前
遇到RabbitMQ 的 `channel_max` 限制报错
rabbitmq
老王熬夜敲代码2 天前
Etcd使用
c++·微服务·etcd
ICollection2 天前
RabbitMQ的安装集群、仲裁队列配置
rabbitmq·集群·银河麒麟
Z_z在努力2 天前
【rabbitmq】RabbitMQ 全面详解:从核心概念到高级应用
分布式·rabbitmq