消息队列
💡 Tips:RabbitMQ 2007 年发布,是使用 Erlang 语言开发的开源消息队列系统,基于 AMQP 协议来实现,消息队列目前主要 2 种模式,分别为"点对点模式"和"发布/订阅模式"。
点对点模式
一个具体的消息只能由一个消费者消费,多个生产者可以向同一个消息队列发送消息,但是一个消息在被一个消息者处理的时候,这个消息在队列上会被锁住或者被移除并且其他消费者无法处理该消息。
发布/订阅模式
单个消息可以被多个订阅者并发的获取和处理。一般来说,订阅有两种类型:
- 临时(ephemeral)订阅:这种订阅只有在消费者启动并且运行的时候才存在。一旦消费者退出,相应的订阅以及尚未处理的消息就会丢失。
- 持久(durable)订阅:这种订阅会一直存在,除非主动去删除。消费者退出后,消息系统会继续维护该订阅,并且后续消息可以被继续处理。
环境准备
💡 Tips:由于RabbitMQ基于Erlang语言开发所以需要先安装Erlang环境
安装RabbitMQ
💡 Tips:下载地址1:https://github.com/rabbitmq/rabbitmq-server/releases
设置Erlang环境变量(可选)
💡 Tips:如安装提示:Please either set ERLANG_HOME to point to your Erlang installation or place
需要设置环境变量
在rabbitmq的server, sbin下: set ERLANG_HOME=Erlang安装目录
也可这样设置系统环境变量
系统变量Path设置
cmd 运行 erl输出版本号就可以了
安装rabbitmq-service
进入Rabbitmqa安装目录下的sbin目录输入cmd打开
输入
rabbitmq-service install
安装rabbitmq服务
💡 Tips:如安装提示:Please set ERLANG_SERVICE_MANAGER_PATH to the folder containing "erlsrv.exe".则先设置ERLANG_SERVICE_MANAGER_PATH环境变量再执行
rabbitmq-service install
rabbitmq-service start 启动rabbitmq服务
安装RabbitMQ-Plugins
RabbitMQ-Plugins相当于是一个管理界面,方便我们在浏览器界面查看RabbitMQ各个消息队列以及exchange的工作情况
rabbitmq-plugins enable rabbitmq_management
成功后浏览器打开 http://localhost:15672 默认用户名密码:guest/guest 3.3.0版本以后该账号只能localhost登陆,不能通过IP地址访问 可通过添加新用户来解决
💡 Tips:TCP connection succeeded but Erlang distribution failed
原因:RabbitMQ的erlang.cookie和用户的cookie冲突了
解决:RabbitMQ Service 使用的 Cookie 是 C:\Windows\System32\config\systemprofile.erlang.cookie
用户使用的 Cookie 是
C:\Users\Administrator.erlang.cookie
把 RabbitMQ Service 的 Cookie 文件复制覆盖到用户的 Cookie
添加admin用户
rabbitmqctl add_user admin zeqp2023
设置用户标签为administrator
rabbitmqctl set_user_tags admin administrator
给用户admin赋予具可配置、可写及可读的权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
忘记用户密码操作
csharp
//命令行进入rabbitmq安装目录下的sbin
//查看当前所有用户
rabbitmqctl list_users
//修改用户密码
rabbitmqctl change_password admin zeqp2023
开启** stomp **协议端口,暴露15674端口,用于前端使用stompjs进行订阅MQ
shell
//命令行进入rabbitmq安装目录下的sbin
rabbitmq-plugins enable rabbitmq_web_stomp
rabbitmq-plugins enable rabbitmq_web_stomp_examples