RabbitMQ服务器 Windows部署安装使用记录
1. 下载
下载地址:http://www.rabbitmq.com/download.html
安装版本:3.7.4
2. windows下安装
2.1. 安装Erlang OTP 20 Setup
下载:http://www.erlang.org/download/otp_win64_20.3.exe
选择“otp_win64_20.3”右键“以管理员身份运行”安装,点击“Next”
点击“Browse...”选择程序安装路径(可默认安装路径),点击“Next”
勾选“Do not create shortcuts ”创建快捷键,点击“Install”
安装完成,点击“Close”
2.2. 安装RabbitMQ
选择“rabbitmq-server-3.7.4”右键“以管理员身份运行”安装,点击“Next”
点击“Browse...”选择程序安装路径(D:),点击“Install”
安装完成,点击“Finish”。
安装完成。
注意:去掉安装路径下的RabbitMQ Server中间的空格,并且确保安装路径没有出现空格,不安装在C:\Program Files\RabbitMQServer,因为Program Files也有空格
2.3. 启用管理工具
1、 在系统中Win+R打开“运行”窗口,输入cmd,点击“确定”
2、 在cmd窗口中对应“rabbitmq-server-3.7.4”安装路径下进入sbin目录下输入rabbitmqctl status 回车,出现下面的数据即说明安装没有问题,
3、 安装 RabbitMQWeb的管理插件,接着上面继续输入以下命令 rabbitmq-plugins enable rabbitmq_management
4、 在IE11/Chrome浏览器中输入地址查看:http://localhost:15672/
说明:不兼容IE8浏览器登录使用
5、 使用默认账号、密码登录:guest/ guest
3. 添加用户
3.1、在“Admin”选项卡页面,展开“Add a user”,分别输入用户名:admin,密 码:123456,点击“Add user”
3.2、点击“admin”
3.3、点击“Set permission ”授权admin 用户
点击 “Set topic permissions” 授权admin用户
在Update user下拉框中,输入密码,确认密码,Tags选择Admin(否则无法登陆)
3.4、在“Queues”选项卡页面,Name文本框输入“gps”,点击“Add queue”
3.5、点击“gps”进入 Queue gps 页面
3.6、在From exchange文本框输入:amq.topic,点击“Bind”
4 日志路径
C:\Users\Administrator\AppData\Roaming\RabbitMQ\log
5.问题记录
问题1Erlang OTP和rabbitmq-server的版本必须匹配
否则启动失败
目前采用的版本组合是otp_win64_20.3和rabbitmq-server-3.7.4
问题2TCP connection succeeded but Erlang distribution failed
RabbitMQ服务的erlang.cookie和OTP的erlang.cookie不一致
RabbitMQ Service 使用的 Cookie 是:
C:\Windows\System32\config\systemprofile\.erlang.cookie
OTP使用的 Cookie 是
C:\Users\Administrator\.erlang.cookie
解决方案:
RabbitMQ Service 的 Cookie 文件复制覆盖到OTP的 Cookie,这个时候需要重启服务器
如果是将OTP的 Cookie覆盖掉RabbitMQ Service 的 Cookie 文件,就直接重启rabbitmq服务就可以了
延申:
简单介绍OTP Open Telecom Platform)
OTP是包装在Erlang中的一组库程序。OTP构成Erlang的行为机制(behaviours),用于编写服务器、有限状态机、事件管理器。不仅如此,OTP的应用行为(the application behavior)允许程序员把写好的Erlang代码打包成一个单独的应用程序;
监测行为(the supervisor behavior )允许程序员创建有层次结构的进程,使得某个进程死后,会重新启动复活。
问题3启动防火墙定制进出过滤规则
打开Windows防火墙,启用允许的应用,选择erl erlsrv这两个服务进程,否则MQ运行异常,原因erl,erlsrv,rabbitmq之间都是通过网络套接字进行数据交换
问题4找不到相关服务
没有使用管理员权限安装上述两个软件包,将不会找到相关的服务,必须鼠标右键以管理员权限启动,切记!!!
问题5实体机安装MQ失败
erl_crash.dump问题解决记录过程
场景
扬州现场实体服务机器安装Erlang和RabbitMQ之后,调用指令启动RabbitMQ失败:
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.14\sbin>rabbitmq-server.bat start
现场环境
操作系统版本
注意
公司内部测试环境,虚拟机搭建的后台环境也是采用这种操作系统版本,并且成功安装RabbitMQ
解决方案
在服务器上安装虚拟机,虚拟机里面重新安装操作系统,然后安装MQ
错误分析
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.14\sbin>"!ERLANG_HOME!\bin\erl.exe" -pa "!RABBITMQ_EBIN_ROOT!" -boot !CLEAN_BOOT_FILE! -noinput -hidden -s rabbit_prelaunch !RABBITMQ_NAME_TYPE! rabbitmqprelaunch!RANDOM!!TIME:~9!@localhost -conf_advanced "!RABBITMQ_ADVANCED_CONFIG_FILE!" -rabbit enabled_plugins_file "!RABBITMQ_ENABLED_PLUGINS_FILE!" -rabbit plugins_dir "!RABBITMQ_PLUGINS_DIR!" -extra "!RABBITMQ_NODENAME!"
{"init terminating in do_boot",{undef,[{rabbit_prelaunch,start,[],[]},{init,start_em,1,[{file,"init.erl"},{line,1123}]},{init,do_boot,3,[{file,"init.erl"},{line,831}]}]}}
init terminating in do_boot ({undef,[{rabbit_prelaunch,start,[],[]},{init,start_em,1,[{_},{_}]},{init,do_boot,3,[{_},{_}]}]})
Crash dump is being written to: C:\Users\ADMINI~1\AppData\Roaming\RabbitMQ\log\erl_crash.dump...done
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.14\sbin>if ERRORLEVEL 2 (rem dist port mentioned in config, do not attempt to set it ) else if ERRORLEVEL 1 (exit /B 1 ) else (set RABBITMQ_DIST_ARG=-kernel inet_dist_listen_min !RABBITMQ_DIST_PORT! -kernel inet_dist_listen_max !RABBITMQ_DIST_PORT! )
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.14\sbin>
尝试方案
1)根据ERLANG_HOME not set correctly添加ERLANG_HOME环境变量,无效
2)网上的相关崩溃信息都会提示错误信息,例如:
{"init terminating in do_boot",{error,{cannot_log_to_file,"/var/log/rabbitmq/[email protected]",{error,eacces}}}}
init terminating in do_boot ()
当前没有任何有效输出
3)erl版本不对,公司环境是正常的
Windows 下安装RabbitMQ服务器及基本配置windows rabbitmq安装与配置
Windows 下安装RabbitMQ服务器及基本配置rabbitmq安装windows
【Linux】Linux下安装RabbitMQ服务linux安装rabbitmq
Windows服务器上Mqtt服务器EMQX的安装使用windows mqtt服务器
windows10下 rabbitmq实战rabbitmq安装windows
ARM 平台Docker运行RabbitMQ 以及迁移的简单办法docker部署rabbitmq
PHP实现php-amqplib/php-amqplib实例RabbitMqphp amqplib