您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
中间件RabbitMQ之运维篇
 
作者:薄荷冰
  2753  次浏览      
 2020-8-11 
 
编辑推荐:
本文主要介绍RabbtMQ是什么,RabbitMQ安装及启动、Rabbi tMQ常用配置介绍、RabbitMQ命令介绍及web界面操作等相关内容。
本文来自于csdn,由火龙果软件Alice编辑、推荐。

一、RabbtMQ简介

RabbitMQ的官方站

rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。他遵循Mozila Public License开源协议。采用Erlang实现的工业级的消息队列(MQ)服务器。

1.1 AMQP

AMQP(高级消息队列协议)是一个异步消息传递所使用的应用层协议规范,作为线路层协议,而不是API (例如JMS),AMQP客户端能够无视消息的来源任意发送和接受信息。AMQP的原始用途只是为金融界提供个可以彼此协作的消息协议,而现在的目标则是为通用消息队列架构提供通用构建工具。因此,面向消息的中间件(MOM) 系统,例如发布/订阅队列,没有作为基本元素实现。反而通过发送简化的AMQ实体,用户被赋予了构建例如这些实体的能力。这些实体也是规范的一部分, 形成了在线路层协议顶端的一个层级: AMQP模型。 这个模型统了消息模式, 诸如之前提到的发布门订阅,队列,事务以及流数据,并且添加了额外的特性,例如更易于扩展,基于内容的路由。

1.2 RabbitMQ的两大核心组件是Exchange和Queue。如图所示:

1. Server (broker):接受客户端(生产者和消费者)连接,实现AMQP消息队列和路由功能的进程。

2. Virtual Host:其实是一个虚拟概念,类似于权限控制组,一个Virtual Host里面可以有若干个Exchange和Queue,但是权限控制的最小粒度是Virtual Host。

3. Exchange:接受生产者发送的消息,并根据Binding规则将消息路由给服务器中的队列。ExchangeType决定了Exchange路由消息的行为,例如,在RabbitMQ中, ExchangeType有direct、Fanout 和Topic三种,不同类型的Exchange路由的行为是不一样的。

4. Message Queue: 消息队列,用于存储还未被消费者消费的消息。

5. Message:由Header和Body组成, Header是由生产者添加的各种属性的集合,包括Message是否被持久化、由哪个Message Queue接受、优先级是多少等。而Body是真正需要传输的APP数据。

6.BindingKey:所谓绑定就是将一个特 定的Exchange(routing-key) 和一个特定的Queue(Binding-Key)绑定起来, 绑定关键字成为BindingKey。

1.3 Exchange分类一-广播式交换器类型

1.3.1 Fanout Exchange -广播式路由键。

你只需要简单的将队列绑定到交换机上。一个发送到交换机的消息都会被转发到与该交换机绑定的所有队列上。很像子网广播,每台子网内的主机都获得了一份复制的消息。Fanout 交换机转发消息是最快的。

Queue向后端的分发方式:

1.平均分配的方式,比如Queue1有10条msg,Consumer1和Consumer2各获得5条,Consumer1做的快,已经做完了,而Consumer2比较慢,只做了2条。这样Consumer1和Consumer2之间就没有得到很好的利用。

2.解决了1的问题。Consumer1和Consumer2每人先发一条,谁做完了就向Queue1返回ACK,Queue1在队列中删除相应的msg。然后会接着Queue1分发下一条msg。以此类推。

1.3.2 Direct Exchange -直接交互式处理路由键。

需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配。这是一个完整的匹配。如果一个队列绑定到该交换机上要求路由键“cat” ,则只有被标记为“cat"的消息才被转发,不会转发cat.puppy,也不会转发cat. guard,只会转发cat。

1.3.2 Topic Exchange -主题式交换器。

通过消息的路由关键字和绑定关键字的模式匹配,将消息路由到被绑定的队列中。这种路由器类型可以被用来支持经典的发布/订阅消息传输模型于使用主题名字空间作为消息寻址模式,将消息传递给那些部分或者全部匹配主题模式的多个消费者。主题交换器类型的工作方式如下:绑定关键字用零个或多个标记构成, 每一个标记之间用 “.”字符分隔。绑定关键字必须用这种形式明确说明,并支持通配符:“*” 匹配一个词组,“#” 零个或多个词组。因此绑定关键字“*.cat.#"匹配路由关键字“usd.cat"和"eur.cat.db”,但是不匹配"cat.mysql

二、RabbitMQ安装及启动

rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm

yum install -y rabbitmq-server.noarch

/sbin/rabbitmq-plugins list

/sbin/rabbitmq-plugins enable rabbitmq_management

systemctl start rabbitmq-server.service 等价 /sbin/rabbitmq-server start | stop | restart | reload

三、Rabbi tMQ常用配置介绍

一般情况下, RabbitMQ的默认配置就足够了。如果希望特殊设置的话,有两个途径:一个是环境变量的配置文件rabbitmq-env. conf ;一个是配置信息的配置文件rabbitmq. config。

注意,这两个文件默认是没有的,如果需要必须自己创建。

1. rabbitmq-env.conf这个文件的位置是确定和不能改变的, 位于: /etc/rabbitmq目录下 (这个目录需要自己创建)。

RABBITMQ_NODE_IP_ADDRESS:指定ip地址

RABBITMQ_NODE_PORT:指定端口号默认5672

RABBITMQ_CONFIG_FILE:配置文件的路径,注意配置文件后缀必须是config

RABBITMQ_LOG_BASE:日志文件路径

2、rabbitm.config这是一个标准的erlang配置文件。它必须符合erlang配置文件的标准。Erlangtuple,结构为{Key, Value} ,Key为atom类型,Value为一个term, 其中几个关键参数为:

1、tcp_listerners设置rabbitmq的监听端口,默认为[5672].

2、disk_free_limit磁盘低水位线,若磁盘容量低于指定值则停止接收数据。

3、vm_memory_high_watermark, 设置内存低水位线, 若低于该水位线,则开启流控机制,默认值是0.4.即内存总量的40%。

四、RabbitMQ命令介绍及web界面操作

1、rabbitmqctl add_user username password 添加用户及密码;

[root@mage-monitor-01~/] #/sbin/rabbitmqctl add_user xiaoming
Creating user "xiaoming" ...
...done.

也可以在web页面操作:登录http://10.0.0.201:15672 (你自己的IP),用户guest(超级用户),密码:guest

2、rabbitmgctl add_vhost vhostname 创建Vhost; rabbitmqctl delete_vhost vhostname 删除Vhost;

[root@mage-monitor-01~/]#/sbin/rabbitmqctl add_vhost test_linux
Creating vhost "test_linux" ...
...done.

3、rabbitmqctl set_permissions -p V_host user “.*” “.*” “.*” 绑定权限,并且具备读写的权限;

[root@mage-monitor-01~/] #/sbin/rabbitmqctl set_permissions -p test_linux xiaoming ".*" ".*" ".*"
Setting permissions for user "xiaoming" in vhost "test_linux" ...
...done.

4、rabbitmqctl change_password username newpassword 修改用户密码; /sbin/rabbitmqctl delete_user <username> 删除用户;

[root@mage-monitor-01~/] #/sbin/rabbitmqctl delete_user xiaoming
Deleting user "xiaoming" ...
...done.

5、rabbitmqctl list_queues 显示所有队列。

6、rabbitmqctl list_vhosts 遍历所有虚拟主机信息;

 

 
   
2753 次浏览       
相关文章

DevOps转型融入到企业文化
DevOps 能力模型、演进及案例剖析
基于 DevOps 理念的私有 PaaS 平台实践
微软开发团队的DevOps实践启示
相关文档

DevOps驱动应用运维变革与创新
运维管理规划
如何实现企业应用部署自动化
运维自动化实践之路
相关课程

自动化运维工具(基于DevOps)
互联网运维与DevOps
MySQL性能优化及运维培训
IT系统运维管理
 
最新课程计划
 
最新文章
DevOps 道法术器,立体化实施框架
DevOps 中高效测试基础架构的最佳实践
DevOps 在公司项目中的实践落地
如何基于 Kubernetes 构建完整的 DevOps 流水线
阿里云Kubernetes实战
最新课程
DevOps体系实践、工具与平台
基于Kubernetes的DevOps实践
互联网运维与DevOps
基于Kubernetes构建企业容器云
企业级DevOps工作体系与平台
更多...   
成功案例
北京 DevOps体系实践、工具与平台
神龙汽车 DevOps体系实践、工具与平台
中国移动通信 网络规划与管理
某航空公司 IT规划与企业架构
某金融公司 IT服务管理(ITIL V3)
更多...