RabbitMQ2:介绍、安装、快速入门、数据隔离

欢迎来到"雪碧聊技术"CSDN博客!

在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将不断探索Java的深邃世界,分享最新的技术动态、实战经验以及项目心得。

让我们一同在Java的广阔天地中遨游,携手提升技术能力,共创美好未来!感谢您的关注与支持,期待在"雪碧聊技术"与您共同成长!

目录

一、介绍和安装

1、介绍

2、安装rabbitMQ(使用docker)

①首先创建一个自定义网络,使容器根据名称通信

[② 运行docker命令,创建、运行rabbitMQ容器(如果没有rabbitMQ镜像,会自动拉取)](#② 运行docker命令,创建、运行rabbitMQ容器(如果没有rabbitMQ镜像,会自动拉取))

③查看mq容器是否运行

3、访问rabbitMQ页面,并进行登录

4、rabbitMQ的整体架构、核心概念

①publisher:消息的发送者,发送消息给交换机。

②exchange:交换机,负责把消息传给队列

③queue:队列,用于存储消息

④consumer:消息的消费者,通过监听队列来获取消息。

5、虚拟主机(virtual-host)的数据隔离功能

①为什么需要virtual-host?

②virtual-host的数据隔离功能

二、快速入门

1、案例介绍

2、具体操作

①创建两个队列

②找到默认交换机amp-fanout,与这两个队列进行绑定

③向默认交换机amp-fanout传一条消息

④查看那两个队列是否收到了该交换机转发的消息

3、总结

①交换机是负责转发消息的,而没有存储消息的能力。因此必须绑定队列,不然交换机收到的消息没地方转发,就会丢失。

②与amp-fanout交换机绑定的两个队列,都收到了该交换机转发的消息,证明amp-fanout交换机是以广播形式进行转发消息的。

③以上案例的流程

三、数据隔离

1、查看当前的虚拟主机有哪些?

2、案例介绍

3、具体操作

①创建一个用户hmall

[②为hmall用户创建一个虚拟主机(virtual host)](#②为hmall用户创建一个虚拟主机(virtual host))

③测试不同虚拟主机之间的数据隔离现象

4、总结


一、介绍和安装

1、介绍

RabbitMQ是基于Erlang语言开发的开源消息通信中间件。

官网地址:http://www.rabbitmq.com/

2、安装rabbitMQ(使用docker)

①首先创建一个自定义网络,使容器根据名称通信

② 运行docker命令,创建、运行rabbitMQ容器(如果没有rabbitMQ镜像,会自动拉取)

bash 复制代码
docker run \
 -e RABBITMQ_DEFAULT_USER=itheima \
 -e RABBITMQ_DEFAULT_PASS=123321 \
 -v mq-plugins:/plugins \
 --name mq \
 --hostname mq \
 -p 15672:15672 \
 -p 5672:5672 \
 --network hmall \
 -d \
 rabbitmq:3.8-management

解读上述的docker命令:

  • -e:配置了一些参数,令账号为itheima,密码为123321
  • -v:将数据卷mq-plugins挂载到容器的/plugins目录上
  • -name:令该docker容器名为mq
  • -hostname:主机名
  • -p:端口映射(宿主机、容器之间的端口映射)
  • --network:指定该容器处于哪个网络(此处是处于我们刚才创建的自定义网络hmall中)
  • -d:表示该容器后台运行(一般都加上这个)
  • rabbitmq:3.8-management:这是镜像名称。

③查看mq容器是否运行

3、访问rabbitMQ页面,并进行登录

4、rabbitMQ的整体架构、核心概念

①publisher:消息的发送者,发送消息给交换机。

②exchange:交换机,负责把消息传给队列

③queue:队列,用于存储消息

④consumer:消息的消费者,通过监听队列来获取消息。

5、虚拟主机(virtual-host)的数据隔离功能

①为什么需要virtual-host?

由于rabbitMQ的并发能力很强很顶用,公司为了省钱,会在不同的项目中重复使用同一套rabbitMQ服务,此时可能导致交换机、队列之间产生冲突。此时可以通过虚拟主机(virtual-host)来解决冲突。

②virtual-host的数据隔离功能

举例:此时我们公司有3个项目,那么我就在rabbitMQ上创建3个虚拟主机(virtual-host),每个虚拟主机专门服务一个项目。

这样一来,每个虚拟主机都有自己的交换机和队列,于是就不会产生冲突了。

二、快速入门

1、案例介绍

2、具体操作

①创建两个队列

hello.queue2队列同上。

创建后的结果:

②找到默认交换机amp-fanout,与这两个队列进行绑定

绑定后的结果:

③向默认交换机amp-fanout传一条消息

④查看那两个队列是否收到了该交换机转发的消息

3、总结

①交换机是负责转发消息的,而没有存储消息的能力。因此必须绑定队列,不然交换机收到的消息没地方转发,就会丢失。

②与amp-fanout交换机绑定的两个队列,都收到了该交换机转发的消息,证明amp-fanout交换机是以广播形式进行转发消息的。

③以上案例的流程

  • 向交换机中传入一条消息
  • 交换机收到消息后,转发给绑定的队列
  • 队列收到交换机的消息。

三、数据隔离

1、查看当前的虚拟主机有哪些?

2、案例介绍

3、具体操作

①创建一个用户hmall

创建的结果:

②为hmall用户创建一个虚拟主机(virtual host)

创建的结果:

③测试不同虚拟主机之间的数据隔离现象

4、总结

假设以后公司只有一台rabbitMQ服务器,但是却要被很多项目使用。

那么此时,我们可以给每个项目,创建一个rabbitMQ用户,然后在每个用户中再创建一台自己的虚拟主机(virtual host),这样就能实现项目之间的数据隔离。

以上就是本篇文章的详细内容,想了解更多的rabbitMQ内容,请关注本博主~~

相关推荐
HPF_992 小时前
RabbitMQ、RocketMQ 和 Kafka 的消息特性对比
kafka·rabbitmq·rocketmq
Foyo Designer2 小时前
【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的消息队列:使用 RabbitMQ 实现异步处
java·spring boot·程序人生·spring·职场和发展·rabbitmq·java-rabbitmq
小五Z4 小时前
RabbitMQ高级特性--重试特性
分布式·rabbitmq
LF3_4 小时前
Centos7,tar包方式部署rabbitmq-3.7.6
rabbitmq·erlang
小五Z4 小时前
RabbitMQ高级特性--TTL和死信队列
分布式·rabbitmq
RainbowSea5 小时前
2. RabbitMQ 的详细安装步骤(两种方式,第一种:yum 安装;第二种:docker 容器安装)
java·消息队列·rabbitmq
RainbowSea6 小时前
1. 初始 RabbitMQ 消息队列
java·消息队列·rabbitmq
小五Z6 小时前
RabbitMQ--延迟队列&事务&消息分发
分布式·rabbitmq
你住过的屋檐12 小时前
【RabbitMQ】Linux上安装RabbitMQ详细步骤
linux·rabbitmq·ruby
19岁开始学习18 小时前
PHP之RabbitMQ笔记
笔记·rabbitmq·php