转载 https://www.cnblogs.com/williamjie/p/9481774.html
为什么会产生消息队列?有几个原因:
MQ框架非常之多,比较流行的有RabbitMq、ActiveMq、ZeroMq、kafka,以及阿里开源的RocketMQ。本文主要介绍RabbitMq
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
下面将重点介绍RabbitMQ中的一些基础概念,了解了这些概念,是使用好RabbitMQ的基础。



Rabbitmq服务器的主要通过rabbitmqctl和rabbimq-plugins两个工具来管理,以下是一些常用功能。
1). 服务器启动与关闭
启动: rabbitmq-server –detached 或 service start rabbitmq
关闭:rabbitmqctl stop 或 service stop rabbitmq
若单机有多个实例,则在rabbitmqctlh后加–n 指定名称
2). 插件管理
开启某个插件:rabbitmq-pluginsenable xxx
关闭某个插件:rabbitmq-pluginsdisablexxx
注意:重启服务器后生效。
3).virtual_host管理
新建virtual_host: rabbitmqctladd_vhost xxx
撤销virtual_host:rabbitmqctl delete_vhost xxx
4). 用户管理
新建用户:rabbitmqctl add_user xxx pwd
删除用户: rabbitmqctl delete_user xxx
改密码: rabbimqctl change_password {username} {newpassword}
设置用户角色:rabbitmqctl set_user_tags {username} {tag ...}
Tag可以为 administrator,monitoring, management
5). 权限管理
权限设置:set_permissions [-pvhostpath] {user} {conf} {write} {read}
Vhostpath
Vhost路径
user
用户名
Conf
一个正则表达式match哪些配置资源能够被该用户访问。
Write
一个正则表达式match哪些配置资源能够被该用户读。
Read
一个正则表达式match哪些配置资源能够被该用户访问。
6). 获取服务器状态信息
服务器状态:rabbitmqctl status
队列信息:rabbitmqctl list_queues[-p vhostpath] [queueinfoitem ...]
Queueinfoitem可以为:name,durable,auto_delete,arguments,messages_ready,
messages_unacknowledged,messages,consumers,memory
Exchange信息:rabbitmqctllist_exchanges[-p vhostpath] [exchangeinfoitem ...]
Exchangeinfoitem有:name,type,durable,auto_delete,internal,arguments.
Binding信息:rabbitmqctllist_bindings[-p vhostpath] [bindinginfoitem ...]
Bindinginfoitem有:source_name,source_kind,destination_name,destination_kind,routing_key,arguments
Connection信息:rabbitmqctllist_connections [connectioninfoitem ...]
Connectioninfoitem有:recv_oct,recv_cnt,send_oct,send_cnt,send_pend等。
Channel信息:rabbitmqctl list_channels[channelinfoitem ...]
Channelinfoitem有consumer_count,messages_unacknowledged,messages_uncommitted,acks_uncommitted,messages_unconfirmed,prefetch_count,client_flow_blocked
注意:erlang和mq的版本,mq版本为3.6,erlang版本不能超过19
#yum安装
#安装依赖
yum install ncurses ncurses-base ncurses-devel ncurses-libs ncurses-static ncurses-term ocaml-curses ocaml-curses-devel openssl-devel zlib-devel make ncurses-devel gcc gcc-c++ unixODBC unixODBC-devel openssl openssl-devel -y
rz rabbitmq-server-3.6.6-1.el7.noarch.rpm
yum install -y erlang
yum localinstall rabbitmq-server-3.6.6-1.el7.noarch.rpm
yum install socat(可能自动安装)
#查看版本
erl -v
#启动服务
systemctl start rabbitmq.server.service
#查看状态
rabbitmqctl status
#启动web管理插件
rabbitmq-plugins enable rabbitmq_management
#如果提示找不到,使用查看插件名称
rabbitmq-plugins list
#增加访问用户,默认用户guest只能本地访问。
rabbitmqctl add_user admin passwd(123456)
#设置超级管理员:
rabbitmqctl set_user_tags admin administrator
设置默认vhost("/")访问权限
rabbitmqctl set_permissions -p "/" admin "." "." ".*"
#浏览器访问:http://IP:15672
用户名admin,密码123456进行登录
#最好登录console的时候,删除默认账户guest
#开放安全组或防火墙15672端口
#访问ip:15672,默认账户密码15672(上面)
Config file /etc/rabbitmq/rabbitmq.config
Database directory /var/lib/rabbitmq/mnesia/rabbit@docker-004
Log file /var/log/rabbitmq/rabbit@docker-004.log
SASL log file /var/log/rabbitmq/rabbit@docker-004-sasl.log
#添加用户
rabbitmqctl add_user rabbit rabbit
#授于超级管理员权限
rabbitmqctl set_user_tags rabbit administrator
#特定账号设置权限
rabbitmqctlset_permissions -p / rabbit ‘.*‘ ‘.*‘ ‘.*‘
#查看权限
rabbitmqctl list_user_permissions rabbit
rabbitmqctl list_permissions -p /
#清除权限
rabbitmqctl clean_permissions rabbit
集群安装调整
注意调整hosts文件
注意调整主目录的cookie文件及权限.erlang.cookie
rabbitmq-server -detached
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@test-redis3
rabbitmqctl start_app
查看集群状态
rabbitmqctl cluster_status
原文:https://www.cnblogs.com/wangchengshi/p/12685112.html