windows环境下安装RabbitMQ

一、RabbitMq简介

1.1消息队列中间件简介

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性[架构] 使用较多的消息队列有 ActiveMQ(安全),RabbitMQ,ZeroMQ,Kafka(大数据),MetaMQ,RocketMQ

以下介绍消息队列在实际应用中常用的使用场景:异步处理,应用解耦,流量削锋和消息通讯四个场景

1.2什么是RabbitMQ

RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。

AMQP :Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。

RabbitMQ 最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。具体特点包括:

1.可靠性(Reliability)

RabbitMQ 使用一些机制来保证可靠性,如持久化、传输确认、发布确认。2.灵活的路由(Flexible Routing)

在消息进入队列之前,通过 Exchange 来路由消息的。对于典型的路由功能,RabbitMQ已经提供了一些内置的 Exchange 来实现。针对更复杂的路由功能,可以将多个Exchange 绑定在一起,也通过插件机制实现自己的 Exchange 。

2.消息集群(Clustering)

多个 RabbitMQ 服务器可以组成一个集群,形成一个逻辑 Broker

3.高可用(Highly Available Queues)

队列可以在集群中的机器上进行镜像,使得在部分节点出问题的情况下队列仍然可用。

4.多种协议(Multi-protocol)

RabbitMQ 支持多种消息队列协议,比如 STOMP、MQTT 等等。

5.多语言客户端(Many Clients)

​ RabbitMQ 几乎支持所有常用语言,比如 Java、.NET、Ruby 等等。

6.管理界面(Management UI)

​ RabbitMQ 提供了一个易用的用户界面,使得用户可以监控和管理消息 Broker 的许多方面。

7.跟踪机制(Tracing)

​ 如果消息异常,RabbitMQ 提供了消息跟踪机制,使用者可以找出发生了什么。

8.插件机制(Plugin System)

​ RabbitMQ 提供了许多插件,来从多方面进行扩展,也可以编写自己的插件。

二、安装准备工具

1.下载Eralng,下面链接已提供otp_win64_20.2.exe

链接: https://pan.baidu.com/s/1lmvCMPVAV1Ba9UogCdQpZg

提取码:x9m7

2.下载rabbitmq,下面链接已提供rabbitmq-server-3.7.4.exe

链接: https://pan.baidu.com/s/1CPfhg5X1e7UitpgMWIcAEg

提取码:h4r3

三、安装步骤(图文)

1、安装erlang并配置环境变量

1.1 双击otp_win64_20.2.exe,点击next

1.3 配置环境变量

新建系统变量名为:ERLANG_HOME 变量值为erlang安装地址

复制代码
ERLANG_HOME   路径:E:\Program Files\erl9.2

双击系统变量path,点击"新建",将%ERLANG_HOME%\bin加入到path中。

复制代码
%ERLANG_HOME%\bin

1.4 验证erlang是否安装成功

win+R键,输入cmd,再输入erl,看到erlang版本号就说明erlang安装成功了。

2、安装RabbitMQ

2.1 双击下载后的.exe文件,安装过程与erlang的安装过程相同。

2.2 安装RabbitMQ-Plugins

打开命令行cd,输入RabbitMQ的sbin目录。

我的目录是:

复制代码
E:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.4\sbin

然后输入以下命令进行安装

复制代码
rabbitmq-plugins enable rabbitmq_management

2.3 验证rabbitmq是否安装成功

输入 以下命令

复制代码
rabbitmqctl status

如果出现以下的图,说明安装是成功的,并且说明现在RabbitMQ Server已经启动了,运行正常

打开浏览器,地址栏输入mq访问地址,即可看到管理界面的登陆页

复制代码
http://127.0.0.1:15672 

四、安装过程中遇到的问题

1、出现 Authentication failed (rejected by the remote node), please check the Erlang cookie

如果改完cookie没生效,重启一下电脑,清除cookie缓存,获取最新修改的cookie,即可解决该问题

解决办法:

比较下面两个文件夹下的.erlang.cookie文件内容,后来修改其中一个文件的内容,使两个文件内容一样。再次执行命令rabbitmqctl status,成功

复制代码
C:\Windows\System32\config\systemprofile\.erlang.cookie
C:\User\{{电脑用户名}}\.erlang.cookie

2、报错:Status of node rabbit@ ... ** (ArgumentError) argument error (stdlib)

检查rabbitmq 服务的日志db、log 等文件夹的路径是否含有中文,检查本机的用户名是否为中文(存在中文会出现下面的报错)

这个本机用户名要是英文

3、主机名原来为中文,改为英文后执行rabbitmqctl status报错, * connected to epmd (port 4369) on DESKTOP-AJ0N...suggestion: start the node

报错信息如下:

epmd reports: node 'rabbit' not running at all

no other nodes on DESKTOP-AJ0N

suggestion: start the node

解决办法:

执行以下命令,重新安装rabbit-mq

复制代码
rabbitmq-service remove
rabbitmq-service install
#如果上述命令不行,执行
rabbitmq-server start 

4、报错"start_error, failed_to_start_child", 原因:rabbitmq和erlang版本不一致

rabbitmq和erlang版本对应关系如下:

复制代码
https://www.rabbitmq.com/which-erlang.html

5、Distribution failed: {{:shutdown, {:failed_to_start_child, :net_kernel, {:EXIT, :nodistribution}}}, {:child, :undefined, :net_sup_dynamic, {:erl_distribution, :start_link, [[:rabbitmqcli67, :shortnames], false]}, :permanent, 1000, :supervisor, [:erl_distribution]}}

检查rabbitmq 服务的日志db、log 等文件夹的路径是否含有中文,检查本机的用户名是否为中文(存在中文会出现下面的报错)

相关推荐
茶杯梦轩2 天前
从零起步学习RabbitMQ || 第三章:RabbitMQ的生产者、Broker、消费者如何保证消息不丢失(可靠性)详解
分布式·后端·面试
回家路上绕了弯4 天前
深入解析Agent Subagent架构:原理、协同逻辑与实战落地指南
分布式·后端
用户8307196840824 天前
Spring Boot 集成 RabbitMQ :8 个最佳实践,杜绝消息丢失与队列阻塞
spring boot·后端·rabbitmq
用户8307196840826 天前
RabbitMQ vs RocketMQ 事务大对决:一个在“裸奔”,一个在“开挂”?
后端·rabbitmq·rocketmq
初次攀爬者7 天前
RabbitMQ的消息模式和高级特性
后端·消息队列·rabbitmq
初次攀爬者9 天前
ZooKeeper 实现分布式锁的两种方式
分布式·后端·zookeeper
让我上个超影吧10 天前
消息队列——RabbitMQ(高级)
java·rabbitmq
塔中妖10 天前
Windows 安装 RabbitMQ 详细教程(含 Erlang 环境配置)
windows·rabbitmq·erlang
断手当码农10 天前
Redis 实现分布式锁的三种方式
数据库·redis·分布式
初次攀爬者10 天前
Redis分布式锁实现的三种方式-基于setnx,lua脚本和Redisson
redis·分布式·后端