最近项目想用个MQ来做业务分离,看了市面上众多产品,最后选了rabbitmq,理由很简单,对window的支持很到位(其实是公司的系列产品都是.net的)。
安装方法什么的就不说了,直接到官网下载双击安装就可以。
如果全部都使用默认配置,你将不会遇到任何阻碍。
安装之后设置一下帐号信息,抄了网上的一个方子:
- REM 开启网页版管理平台
- rabbitmq-plugins.bat enable rabbitmq_management
- REM 添加一个帐号 密码
- rabbitmqctl.bat add_user lijinan lijinan
- REM 添加角色
- rabbitmqctl.bat set_user_tags lijinan administrator
- REM 添加权限
- rabbitmqctl.bat set_permissions -p / lijinan ".*" ".*" ".*"
REM 开启网页版管理平台
rabbitmq-plugins.bat enable rabbitmq_management
REM 添加一个帐号 密码
rabbitmqctl.bat add_user lijinan lijinan
REM 添加角色
rabbitmqctl.bat set_user_tags lijinan administrator
REM 添加权限
rabbitmqctl.bat set_permissions -p / lijinan ".*" ".*" ".*"
设置好之后,你可以到 http://localhost:15672 看到爽歪歪的管理界面,按官网给出的C#解决方法,嗯,一切顺利,发送,接收都是如此的完美
在本地试过没问题之后,于是就安装到了公司内部服务器
因为公司网络有端口限制,防火墙只开了有限的端口,默认的5672和15672是用不了的,正常流程是找IT开端口,但为是省事,想直接通过修改rabbitmq的配置文件,把默认端口改为公司允许的端口,比如我是要改到8008。
于是就开始了修改配置,这里面遇多了一些坑,总结一下:
1. rabbitmq.config默认是没有生成的,只有一个rabbitmq.config.example,需要自己建一个,其实就是把.example拿掉就是了
2. rabbitmq.config目录并非安装目录下面的etc,默认是在 C:\Users\%USERNAME%\AppData\Roaming\RabbitMQ 下,这一点在安装目录下面的etc目录下的readme.txt中有说明。
3. rabbitmq.config的数据格式类似json,但并非json。其中端口号是以下这行
%% {tcp_listeners, [5672]},
很多人以为只需把 %% 拿掉保存就OK了。但其实后面还有一个小逗号,需要注意,如果当前大节点下面就这一个节点,这个逗号是必须拿掉的。
如果这是json格式,后面的小逗号是无关紧要的。但可惜,这是erlang。
4. 其次,修改了配置文件后,不能只是重启服务。而需要到安装目录下面的sbin
执行 rabbitmq-service.bat stop 停止服务
执行 rabbitmq-service.bat install 重新安装服务,这时才会重新加载config文件
执行 rabbitmq-service.bat start 开启服务
5. 所有的命令行操作,都必须在管理员的权限下进行
6. 如果config有问题,服务是启动不起来的,而且错误信息也是很难发现的。
7. 所有config的修改,都必须修改好后,执行第4步
8. 如果是通过环境变量设置config所在目录,一定要注意,环境变量 RABBITMQ_CONFIG_FILE, 这个变量并非是config所在目录,也不是config的全路径。
如你想设置config为 D:\RabbitMQ\rabbitmq.config,则 RABBITMQ_CONFIG_FILE=D:\RabbitMQ\rabbitmq ,因为rabbitmq会自动在变量值后面加上.config后缀