RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing Protocol高级消息队列协议)的标准实现,用erlang语言开发。RabbitMQ据说具有良好的性能和时效性,同时还能够非常好的支持集群和负载部署,非常适合在较大规模的分布式系统中使用,具体特性还在验证中,待检验。由于项目需要,安装并配置了RabbitMQ,服务器操作系统是CentOS7。
v基础知识
什么是消息队列(Message Queue)?
消息(Message)
网络中的两台计算机或者两个通讯设备之间传递的数据。例如说:文本、音乐、视频等内容。
队列(Queue)
一种特殊的线性表(数据元素首尾相接),特殊之处在于只允许在首部删除元素和在尾部追加元素。入队、出队。
消息队列(MQ)
消息+队列,保存消息的队列。消息的传输过程中的容器;主要提供生产、消费接口供外部调用做数据的存储和获取。
MQ分类
MQ主要分为两类:点对点(p2p)、发布订阅(Pub/Sub)
共同点:
消息生产者生产消息发送到queue中,然后消息消费者从queue中读取并且消费消息。
不同点:
p2p模型包括:消息队列(Queue)、发送者(Sender)、接收者(Receiver)
一个生产者生产的消息只有一个消费者(Consumer)(即一旦被消费,消息就不在消息队列中)。比如说打电话。
Pub/Sub包含:消息队列(Queue)、主题(Topic)、发布者(Publisher)、订阅者(Subscriber)。每个消息可以有多个消费者,彼此互不影响。比如我发布一个微博:关注我的人都能够看到。
那么在大数据领域呢,为了满足日益增长的数据量,也有一款可以满足百万级别消息的生成和消费,分布式、持久稳定的产品——RabbitMQ。
v安装依赖项
RabbitMQ使用erlang语言开发,所以我们首先安装erlang.
rpm -Uvh http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el7.centos.x86_64.rpm
RabbitMQ是基于erlang的,所以RabbitMQ和erlang版本要对应,要不然有可能安装失败。 RabbitMQ Erlang Version Requirements — RabbitMQ
vInstall RabbitMQ-Server
rpm -Uvh http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.6/rabbitmq-server-3.5.6-1.noarch.rpm
安装好了之后,验证是否安装成功。rpm -qa|grep rabbitmq
启动MQ:service rabbitmq-server start
重启MQ:service rabbitmq-server restart
关闭MQ:service rabbitmq-server stop
查看状态:rabbitmqctl status
v维护插件
先启动MQ,然后安装维护插件。rabbitmq-plugins enable rabbitmq_management
这个命令的作用是安装RabbitMq的一个管理插件
查看安装的插件rabbitmq-plugins list
安装好了以后就可以通过在浏览器访问 http://ip:15672进入一个管理界面。
v远程访问
这时候登录会提示login failed
需要开启远程访问授权。
cd /etc/rabbitmq
cp /usr/share/doc/rabbitmq-server-3.5.6/rabbitmq.config.example /etc/rabbitmq/
mv rabbitmq.config.example rabbitmq.config
vim /etc/rabbitmq/rabbitmq.config
在rabbitmq.config中添加 {loopback_users, []}
用户名和密码默认都是guest
,登录后显示如下:
关于RabbitMQ Management更多介绍,可以看看这里。 SpringBoot(二十三)集成RabbitMQ---浅谈RabbitMQ Management
v用户管理
新增一个用户 rabbitmqctl add_user Username Password
设置admin rabbitmqctl set_user_tags Username administrator
用户角色大致可分为五类,超级管理员, 监控者, 策略制定者, 普通管理者以及其他。
超级管理员(administrator):
可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。监控者(monitoring)
可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)策略制定者(policymaker)
可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。与administrator的对比,administrator能看到这些内容普通管理者(management)
仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。其他
无法登陆管理控制台,通常就是普通的生产者和消费者。删除一个用户 rabbitmqctl delete_user Username
修改用户的密码 rabbitmqctl change_password Username Newpassword
查看当前用户列表 rabbitmqctl list_users
其他参考资料:
- Installing on RPM-based Linux (RHEL, CentOS, Fedora, openSUSE) — RabbitMQ http://www.rabbitmq.com/install-rpm.html
- EPEL/FAQ - Fedora Project Wiki https://fedoraproject.org/wiki/EPEL/FAQ#howtouse
- News — RabbitMQ http://www.rabbitmq.com/news.html
作 者:请叫我头头哥
出 处:http://www.cnblogs.com/toutou/
关于作者:专注于基础平台的项目开发。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!