黑马点评中,使用基于Redis的Stream实现消息队列,但是Strema已经不太常用。在此修改为使用RabbitMQ实现消息队列。主要包括RabbitMQ的环境准备(Docker的下载与安装)以及如何修改黑马点评中的代码。
【黑马点评】使用RabbitMQ实现消息队列——1 docker与RabbitMQ环境安装
1 环境准备
1.1 安装docker
注意,由于我的电脑是Win11家庭版,没有Hyper-V,因此需要自己安装并启用Hyper-V。非Win11家庭版的可以参考其他教程安装docker。
我参考的教程主要如下:
【Docker】掌握 Docker魔法:Windows 11 平台上的完美容器部署终极指南_win11安装docker-CSDN博客
超详细Windows11家庭中文版系统安装Docker-20230401_windows11安装docker-CSDN博客
1.1.1 安装启用Hyper-V
Windows11家庭版上安装Hyper-V并导入虚拟机的方法_windows11家庭中文版启用hiperv-CSDN博客
(1)下载并安装
在桌面新建Hyper-V Instarller.cmd文件,文件内容如下
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
建好后右键选择以管理员身份运行
运行后,最后输入Y重启计算机
重启后,在搜索框输入启用或关闭Windows功能,然后找到Hyper-V,启用Hyper-V
同时注意勾选Windows虚拟机监控程序平台,适用于Linux的Windows子系统和虚拟机平台,重启生效
1.1.2 下载安装Docker
1、官网下载docker文件Get Started | Docker,选择download for windows下载。
Release notes | Docker Docs
2、双击打开下载好的文件Docker Desktop Installer.exe,add shortcut to desktop选择√代表同意添加快捷键到桌面,如果不勾选就说明不创建快捷键,大家根据自己需求选择就行。之后点击
3、等待一会后会出现下图所示说明安装成功,选择Close and restart 关闭这个界面重启电脑
- 电脑重启后,点击
Docker
程序会看到如下界面,选择Accpet
安装成功,注册一下docker账号后登录
登陆成功。
此时,进入命令行,输入如下命令docker --version,输出如下则说明安装成功。
1.2 安装RabbitMQ
打开命令行,输入以下命令:docker pull rabbitmq:management (注意,刚刚打开的docker不要关)
如果想要实现数据持久化,需要添加以下两个命令,不需要的话可以把这两个命令去掉
-v d:/rabbitmq/data:/var/lib/rabbitmq/mnesia/ 挂载宿主机目录到容器目录中
–hostname my_rabbit 指定hostname的名称,因为RabbitMQ的mnesia目录中文件夹名称的一部分是hostname,如果不定义的话,是随机生成的,后续如果重新创建容器,因为挂机目录文件夹名称不一样,就无法保持新旧容器的数据一致。
创建容器并运行
语法 docker run -dit --name {自定义镜像名称} -e RABBITMQ_DEFAULT_USER={用户名} -e RABBITMQ_DEFAULT_PASS={密码} -p {管理界面端口} -p {服务端口} rabbitmq:management
docker run -dit --name rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 -p 15672:15672 -p 5672:5672 rabbitmq:management
浏览器地址栏输入 http://localhost:15672 ,登录 RabbitMQ 管理界面。如下图则表示安装成功。
docker中也能看到添加的RabbitMQ
版权归原作者 -$_$- 所有, 如有侵权,请联系我们删除。