图文Win/Linux下新版RabbitMQ的安装与使用

1. 消息队列

什么是消息队列

消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。

消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。

消息队列怎么用

从上面的描述中可以看出消息队列是一种应用间的异步协作机制,那什么时候需要使用 MQ 呢?

以常见的订单系统为例,用户点击【下单】按钮之后的业务逻辑可能包括:扣减库存、生成相应单据、发红包、发短信通知。在业务发展初期这些逻辑可能放在一起同步执行,随着业务的发展订单量增长,需要提升系统服务的性能,这时可以将一些不需要立即生效的操作拆分出来异步执行,比如发放红包、发短信通知等。这种场景下就可以用 MQ ,在下单的主流程(比如扣减库存、生成相应单据)完成之后发送一条消息到 MQ 让主流程快速完结,而由另外的单独线程拉取MQ的消息(或者由 MQ 推送消息),当发现 MQ 中有发红包或发短信之类的消息时,执行相应的业务逻辑。

详情可阅览: https://blog.csdn.net/whoamiyang/article/details/54954780

2. win安装RabbitMQ

简介

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

rabbitMQ是一款基于AMQP协议的消息中间件,它能够在应用之间提供可靠的消息传输。在易用性,扩展性,高可用性上表现优秀。使用消息中间件利于应用之间的解耦,生产者(客户端)无需知道消费者(服务端)的存在。而且两端可以使用不同的语言编写,大大提供了灵活性。
在这里插入图片描述

安装Erlang

注意:Erlang版本需要和rabbitmq版本匹配才行,对应版本查询的官方地址:https://www.rabbitmq.com/which-erlang.html

第一步:下载Erlang 推荐下载地址:Erlang管网

第二步:打开Erlang安装包:
在这里插入图片描述
第三步:点击next,修改安装目录,建议除C的其它盘,不要带中文字符:
在这里插入图片描述
第四步:点击next,是否加入到快捷方式,保持默认即可,再点击install开始安装:
在这里插入图片描述
安装完毕,点击Close:
在这里插入图片描述
第五步:新建Erlang环境变量:
在这里插入图片描述
修改环境变量path,增加Erlang变量至path,%ERLANG_HOME%\bin;
在这里插入图片描述
第六步,在cmd命令行输入erl -version, 查看版本号及是否安装配置成功
在这里插入图片描述
至此,erlang安装在win上结束

安装RabbitMQ

第一步:下载RabbitMQ 推荐下载地址:RabbitMQ官网

第二步:打开rabbitmq-server安装包:
在这里插入图片描述
第二步:点击next,修改安装目录,再点击install,开始安装:
在这里插入图片描述
在这里插入图片描述
第三步,开启rabbitmq_managemen后台管理插件,进入到rabbitmq-server安装目录下的sbin文件夹下启动cmd命令,输入rabbitmq-plugins enable rabbitmq_management:

此处注意如果执行以下命令报错目录名称无效. 文件名,目录名或卷标语法不正确.注意本机电脑名称是否包含有中文,有中文的话修改为全英文,重启电脑再次执行以下命令即可

λ rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@WitHong:
rabbitmq_management
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@WitHong...
The following plugins have been enabled:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch

set 3 plugins.
Offline change; changes will take effect at broker restart.

启动rabbitmq-server报错:

λ rabbitmq-server.bat
"WARNING: Using RABBITMQ_ADVANCED_CONFIG_FILE: C:\Users\Admin\AppData\Roaming\RabbitMQ\advanced.config"

BOOT FAILED
===========

Error description:
    init:do_boot/3 line 819
    init:start_em/1 line 1111
    rabbit:start_it/1 line 484
    rabbit:broker_start/1 line 360
    rabbit:start_loaded_apps/2 line 613
    app_utils:manage_applications/6 line 126
    lists:foldl/3 line 1263
    rabbit:'-handle_app_error/1-fun-0-'/3 line 736
throw:{could_not_start,ra,
          {ra,{{undef,
                   [{persistent_term,put,['$ra_logger',rabbit_log_ra_shim],[]},
                    {ra_sup,init,1,[{file,"src/ra_sup.erl"},{line,23}]},
                    {supervisor,init,1,[{file,"supervisor.erl"},{line,295}]},
                    {gen_server,init_it,2,
                        [{file,"gen_server.erl"},{line,374}]},
                    {gen_server,init_it,6,
                        [{file,"gen_server.erl"},{line,342}]},
                    {proc_lib,init_p_do_apply,3,
                        [{file,"proc_lib.erl"},{line,249}]}]},
               {ra_app,start,[normal,[]]}}}}
Log file(s) (may contain more information):
   C:/Users/Admin/AppData/Roaming/RabbitMQ/log/rabbit@WitHong.log
   C:/Users/Admin/AppData/Roaming/RabbitMQ/log/rabbit@WitHong_upgrade.log

{"init terminating in do_boot",{could_not_start,ra,{ra,{{undef,[{persistent_term,put,['$ra_logger',rabbit_log_ra_shim],[]},{ra_sup,init,1,[{file,"src/ra_sup.erl"},{line,23}]},{supervisor,init,1,[{file,"supervisor.erl"},{line,295}]},{gen_server,init_it,2,[{file,"gen_server.erl"},{line,374}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,342}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,249}]}]},{ra_app,start,[normal,[]]}}}}}
init terminating in do_boot ({could_not_start,ra,{ra,{{undef,[_]},{ra_app,start,[_]}}}})

Crash dump is being written to: C:\Users\Admin\AppData\Roaming\RabbitMQ\log\erl_crash.dump...done

查找原因后,发现Erlang版本需要和rabbitmq版本匹配才行,对应版本查询的官方地址:https://www.rabbitmq.com/which-erlang.html
卸载低版本的Erlang,重新下载高版本的Erlang,重复之前的过程再安装一遍,再次启动rabbitmq-server:

λ rabbitmq--server.bat
"WARNING: Using RABBITMQ_ADVANCED_CONFIG_FILE: C:\Users\Admin\AppData\Roaming\RabbitMQ\advanced.config"

  ##  ##      RabbitMQ 3.8.3
  ##  ##
  ##########  Copyright (c) 2007-2020 Pivotal Software, Inc.
  ######  ##
  ##########  Licensed under the MPL 1.1. Website: https://rabbitmq.com

  Doc guides: https://rabbitmq.com/documentation.html
  Support:    https://rabbitmq.com/contact.html
  Tutorials:  https://rabbitmq.com/getstarted.html
  Monitoring: https://rabbitmq.com/monitoring.html

  Logs: C:/Users/Admin/AppData/Roaming/RabbitMQ/log/rabbit@WitHong.log
        C:/Users/Admin/AppData/Roaming/RabbitMQ/log/rabbit@WitHong_upgrade.log

  Config file(s): c:/Users/Admin/AppData/Roaming/RabbitMQ/advanced.config

  Starting broker... completed with 3 plugins.

启动成功。
在这里插入图片描述
默认UserName:guest Password:guest
在这里插入图片描述

3. Linux安装RabbitMQ

安装配置epel源
$ yum -y install epel-release

rabbitmq安装之前需要安装socat,否则直接安装rabbitmq可能会报错
$yum install socat

安装erlang
$ yum -y install erlang

安装RabbitMQ
$ yum -y install rabbitmq-server
注意:service rabbitmq-server start/stop
常用命令:

#启动/停止RabbitMQ服务
service rabbitmq-server start/stop
#状态查看
rabbitmqctl status
#启用插件
rabbitmq-plugins enable rabbitmq_management
#重启服务
service rabbitmq-server restart
#添加帐号:name 密码:passwd
rabbitmqctl add_user name passwd
#赋予其administrator角色
rabbitmqctl set_user_tags name administrator
#设置权限
rabbitmqctl set_permissions -p / name ".*" ".*" ".*"
# 查看所有用户
rabbitmqctl list_users
# 查看用户权限
rabbitmqctl list_user_permissions name
删除用户(安全起见,删除默认用户)
rabbitmqctl delete_user guest

rabbit默认的web端口号是15672

注意放通外网访问,我的是阿里云服务器,需要配置安全组策略,增加外部访问策略放通TCP:15672

参考链接:https://www.jianshu.com/p/f54dc259a9ed/

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值