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的优势,为分布式系统设计提供强有力的支持。

相关推荐
布谷歌14 分钟前
Oops! 更改field的数据类型,影响到rabbitmq消费了...(有关于Java序列化)
java·开发语言·分布式·rabbitmq·java-rabbitmq
一个假的前端男18 分钟前
RabbitMQ 消息队列 优化发送邮件
分布式·rabbitmq·ruby
A尘埃19 分钟前
关闭超时订单和七天自动确认收货+RabbitMQ规范
分布式·rabbitmq
m0_7482412322 分钟前
RabbitMq 基础
分布式·rabbitmq·ruby
黄名富2 小时前
Spring Cloud — Hystrix 服务隔离、请求缓存及合并
java·分布式·spring·spring cloud·hystrix·微服务
LUCIAZZZ4 小时前
简单说一下什么是RPC
java·网络·网络协议·计算机网络·spring cloud·rpc
yinbp9 小时前
bboss v7.3.5来袭!新增异地灾备机制和Kerberos认证机制,助力企业数据安全
大数据·elasticsearch·微服务·etl·restclient·bboss
星星点点洲14 小时前
【RabbitMQ业务幂等设计】RabbitMQ消息是幂等的吗?
rabbitmq
一位卑微的码农14 小时前
深入解析Spring Cloud Config:构建高可用分布式配置中心
分布式·spring cloud·微服务·架构
劉煥平CHN17 小时前
RabbitMQ的脑裂(网络分区)问题
网络·分布式·rabbitmq