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

news2024/11/25 21:35:18

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

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

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

目录

一、介绍和安装

1、介绍

2、安装rabbitMQ(使用docker)

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

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

③查看mq容器是否运行

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

4、为什么Linux虚拟机挂起一段时间后,docker容器里的rabbitMQ无法访问?

①问题介绍

②问题原因

 ③解决办法

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

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

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

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

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

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

①为什么需要virtual-host?

②virtual-host的数据隔离功能

二、快速入门

1、案例介绍

2、具体操作

①创建两个队列

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

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

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

3、总结

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

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

③以上案例的流程

三、数据隔离

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

2、案例介绍

3、具体操作

①创建一个用户hmall

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

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

4、总结


一、介绍和安装

1、介绍

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

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

2、安装rabbitMQ(使用docker)

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

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

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、为什么Linux虚拟机挂起一段时间后,docker容器里的rabbitMQ无法访问?

①问题介绍

挂起Linux虚拟机,一段时间后,再次启动linux虚拟机,发现docker容器里的rabbitMQ无法访问了,如下:

 

②问题原因

是你的linux虚拟机的挂起方式不对,应该如下操作:

 

 ③解决办法

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

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

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

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

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

 6、虚拟主机(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内容,请关注本博主~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2247504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 下进程基本概念与状态

文章目录 一、进程的定义二、 描述进程-PCBtask_ struct内容分类 三、 进程状态 一、进程的定义 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。广义定义:进程是一个具有一定…

数据库MYSQL——表的设计

文章目录 前言三大范式:几种实体间的关系:一对一关系:一对多关系:多对多关系: 前言 之前的博客中我们讲解的是关于数据库的增删改查与约束的基本操作, 是在已经创建数据库,表之上的操作。 在实…

开源动态表单form-create-designer 扩展个性化配置的最佳实践教程

在开源低代码表单设计器 form-create-designer 的右侧配置面板里,field 映射规则为开发者提供了强大的工具去自定义和增强组件及表单配置的显示方式。通过这些规则,你可以简单而高效地调整配置项的展示,提升用户体验。 源码地址: Github | G…

面试:请阐述MySQL配置文件my.cnf中参数log-bin和binlog-do-db的作用

大家好,我是袁庭新。星球里的小伙伴去面试,面试官问:MySQL配置文件my.cnf中参数log-bin和binlog-do-db的作用?一脸懵逼~不知道该如何回答。 在MySQL的配置文件my.cnf中,log-bin和binlog-do-db是与二进制日志…

Java语言编程,通过阿里云mongo数据库监控实现数据库的连接池优化

一、背景 线上程序连接mongos超时,mongo监控显示连接数已使用100%。 java程序报错信息: org.mongodb.driver.connection: Closed connection [connectionId{localValue:1480}] to 192.168.10.16:3717 because there was a socket exception raised by…

Hive离线数仓结构分析

Hive离线数仓结构 首先,在数据源部分,包括源业务库、用户日志、爬虫数据和系统日志,这些都是数据的源头。这些数据通过Sqoop、DataX或 Flume 工具进行提取和导入操作。这些工具负责将不同来源的数据传输到基于 Hive 的离线数据仓库中。 在离线…

MySQL1——基本原理和基础操作

文章目录 Mysql数据库1——基本原理和基础操作1. 基本概念2. Mysql体系结构2.1 连接层2.2 服务层2.3 存储引擎层 3. 三级范式与反范式4. 完整性约束4.1 实体完整性约束4.2 参照完整性约束 5. CRUDDDLDMLDCLDQL 6. 高级查询基础查询条件查询分页查询查询结果排序分组聚合查询联表…

【Ubuntu24.04】服务部署(虚拟机)

目录 0 背景1 安装虚拟机1.1 下载虚拟机软件1.2 安装虚拟机软件1.2 安装虚拟电脑 2 配置虚拟机2.1 配置虚拟机网络及运行初始化脚本2.2 配置服务运行环境2.2.1 安装并配置JDK172.2.2 安装并配置MySQL8.42.2.3 安装并配置Redis 3 部署服务4 总结 0 背景 你的服务部署在了你的计算…

Redis 常用数据类型插入性能对比:循环插入 vs. 批量插入

Redis 是一款高性能的键值数据库,其支持多种数据类型(String、Hash、List、Set、ZSet、Geo)。在开发中,经常会遇到需要插入大量数据的场景。如果逐条插入,性能会显得较低,而采用 Pipeline 批量插入 能大幅提…

uniapp页面样式和布局和nvue教程详解

uniapp页面样式和布局和nvue教程 尺寸单位 uni-app 支持的通用 css 单位包括 px、rpx px 即屏幕像素。rpx 即响应式px,一种根据屏幕宽度自适应的动态单位。以750宽的屏幕为基准,750rpx恰好为屏幕宽度。屏幕变宽,rpx 实际显示效果会等比放大…

Spring AI 框架使用的核心概念

一、模型(Model) AI 模型是旨在处理和生成信息的算法,通常模仿人类的认知功能。通过从大型数据集中学习模式和见解,这些模型可以做出预测、文本、图像或其他输出,从而增强各个行业的各种应用。 AI 模型有很多种&…

(Keil)MDK-ARM各种优化选项详细说明、实际应用及拓展内容

参考 MDK-ARM各种优化选项详细说明、实际应用及拓展内容 本文围绕MDK-ARM优化选项,以及相关拓展知识(微库、实际应用、调试)进行讲述,希望对你今后开发项目有所帮助。 1 总述 我们所指的优化,主要两方面: 1.代码大小(Size) 2.代码性能(运行时间) 在MDK-ARM中,优…

python成绩分级 2024年6月python二级真题 青少年编程电子学会编程等级考试python二级真题解析

目录 python成绩分级 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python成绩分级 2024年6月 python编程等级考试二级编程题 一、题目要求 …

苹果Siri将搭载大型语言模型,近屿智能抢占AIGC大模型人才培养高地

据媒体报道,苹果公司正在研发一款全新升级、更加智能且对话能力显著提升的Siri,意在超越OpenAI的ChatGPT及其他语音服务。 报道指出,新一代Siri将搭载更为先进的大型语言模型(LLM),苹果期望其能够进行连续…

Ubuntu,openEuler,MySql安装

文章目录 Ubuntu什么是Ubuntu概述Ubuntu版本简介桌面版服务器版 部署系统新建虚拟机安装系统部署后的设置设置root密码关闭防火墙启用允许root进行ssh安装所需软件制作快照 网络配置Netplan概述配置详解配置文件DHCP静态IP设置 软件安装方法apt安装软件作用常用命令配置apt源 d…

【C++动态规划】1411. 给 N x 3 网格图涂色的方案数|1844

本文涉及知识点 C动态规划 LeetCode1411. 给 N x 3 网格图涂色的方案数 提示 你有一个 n x 3 的网格图 grid ,你需要用 红,黄,绿 三种颜色之一给每一个格子上色,且确保相邻格子颜色不同(也就是有相同水平边或者垂直…

小鹏汽车智慧材料数据库系统项目总成数据同步

1、定时任务处理 2、提供了接口 小鹏方面提供的推送的数据表结构: 这几个表总数为100多万,经过条件筛选过滤后大概2万多条数据 小鹏的人给的示例图: 界面: SQL: -- 查询车型 select bmm.md_material_id, bmm.material_num, bm…

【解决方案】VITE 忽略指定路径的资源

前言 问题起因是因为项目需要引入服务器端的网络图片 而在编写配置时发现,Vite并不支持排除指定前缀的资源 唯一可以排外的只有 Rollup 的 external 选项可以排除外部依赖,但他只能排除外部依赖,不支持指定路径资源或指定前缀的资源&#…

自然语言处理: RAG优化之Embedding模型选型重要依据:mteb/leaderboard榜

本人项目地址大全:Victor94-king/NLP__ManVictor: CSDN of ManVictor git地址:https://github.com/opendatalab/MinerU 写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!! 写在前面: 笔者更新不易,希望走过路…

疑难Tips:NextCloud域名访问登录时卡住,显示违反内容安全策略

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 1使用域名访问Nextcloud用户登录时卡住,显示违反内容安全策略 我使用官方Docker镜像来部署NextCloud 28.0.5,并通过Openresty反向代理Nextcloud,但是在安装后无法稳定工作,每次登录后,页面会卡死在登录界面,无法…