2019/08/23 rabbitmq基础应用(01)

消息中间件通过
AMQP(2003年前后出现的)协议来实现 ,高级消息队列协议
AMQP 0-9-1
AMQP 1.0
主要作用是通过中间件组件,统称为broker
主要是为了实现分布式应用的个组件间的建瓯,消息中间件打破,C/S架构传递信息,C.S必须在线的法则,一个请求的发生者叫消息的生产者,发出请求是直接吧请求扔给中间件,由中间件负责存储转发,如果消费者不在线,依然不妨碍信息发出,有可能依然被正常服务,所以实现了各组件间的解耦
消息型中间件最核心组件由三个,
交换器exchange,把收到的消息给订阅者,每一个队列给订阅者建立通信
信道,channel
一般一个订阅者对应一个订阅
在这里插入图片描述
**消息到了发往哪个队列,取决于 你的路由模式,路由模式通常是绑定器进行定义,路由种类有多种,比如direct(点到点的直接路由),跨体系路由,find out直线扇出,headers 基于首部,消息扔到broken以后,组成的有三个片段
1.headers首部,消息首部,发给消息型中间件,中间件会自行添加一个首部
2.属性attributes(描述对应消息有多大的,发出时间等)
3.body
路由可以基于headers某些信息进行路由,用户的某些信息,有的可能路由到第一个,有的可能是第二个,有的甚至有多个路由,取决于你的路由模式,
路由模式有四种比较常见的,路由模型,
direct
topic
fan-out
headers基于首部
**在这里插入图片描述在这里插入图片描述不管基于哪种路由模型,定义了路由机制,其实就相当于某个队列,与这个交换器的某一类消息产生绑定,这个路由规则一般称为绑定器,
broker(消息中间件)关键组件有三个
exchange
bingdings
queue队列
所有的消息生产者通过消息中间件的API,将消息提交给broker的exchange,由exchange根据bingding ,根据哪些队列绑定了哪些消息,将其路由至指定的qeue,而后由指定的订阅者从queue取出消息,消息取出的方式有很多种,
在这里插入图片描述
**AMQP还定义了第四个组件,virtualhost虚拟主机
virtualhost:(主要实现应用隔离)相当于每个虚拟主机都是一个broker(消息中间件)一样
每个虚拟机内部都可以由exchange,binding,queue这三个组件
exchange
bingdings
queue队列
逻辑上将一个物理broker划归为多个不同的应用
**

中间件的常见实现:
apache的Qpid, Activemq
rabbitMQ(Erlang语言研发)
kafka(非常重的消息流才xuyaokafka)
0MQ(不是服务,是一堆库,开发程序需要调用找个库,才能发生作用,是一个嵌入式微型环境中用的消息型中间件)

rabbitmq:
程序包是epel源中的,rabbitmq-server
有很多插件:rabbitmq-plugins{enable|disable禁用|list列出}
rabbitmq-management、监听于15672端口,25672是rabbitmq集群通信的接口
在这里插入图片描述在这里插入图片描述
比较多的三个程序
rabbitmqctl 命令行控制接口工具
在这里插入图片描述
list 列出所有插件,在这里插入图片描述
enable启用这些插件,在这里插入图片描述
插件有依赖关系,所以被依赖的插件就会自动启动,小写e进行标识在这里插入图片描述
手动启动和显式启动都是用大写E,启动完找个,由于监听了新的端口,需要重新启动服务
25672和15672ok
在这里插入图片描述
用户名guest,密码guest在这里插入图片描述
overview概览,connections客户端链接,channels,客户端与exchanges的通信一般是通过channel(频道)来完成的queues队列(订阅的可以在这里看到消息)
channel是用户和queues关联到组件
在这里插入图片描述在这里插入图片描述

如何去配置使用rabbitmq-server:
三个接口,
环境变量,(主要定义配置文件在什么地方,也包括网络参数,)网络参数及配置文件路径
配置文件,主要定义服务器各组件的权限(用户,交换器,),每个组件的访问权限,资源限制,插件及集群功能
运行时参数,主要修改集群运行时的某些设定的,(集群的运行时参数设定)
大部分内容都有默认值
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
环境配置文件
在这里插入图片描述
主要在这几个路径下在这里插入图片描述
找个文件时定义好启动的插件以后,自定启动的插件记录到这里,默认不存在,只有启动插件以后,才会显示的在这里插入图片描述

环境变量:/etc/rabbitmq/rabbitmq-env.conf,在这个文件可以定义很多的环境变量
RABBITMQ_BASE:rabbitmq的安装目录(这个目录用于保存,rabbitmq的数据库,所有消息队列都放在这里,用来安装rabbitmq的数据库和日志文件)(在linux和unix主机不常用,windows用的多)
RABBITMQ_CONFIG_FILE:rabbitmq自己的配置文件 默认/etc/rabbitmq/rabbitmq
RABBITMQ_LOGS 日志文件
RABBITMQ_NODE_IP_ADDRESS:定义监听 ip地址
RABBITMQ_NODE_PORT:端口
RABBITMQ_PLIGINS_DIR:
有些有默认值,在配置文件可以看到
在这里插入图片描述
基于配置文件进行配置,通过前面的环境变量RABBITMQ_CONFIG_FILE来进行定义,默认/etc/rabbitmq/rabbitmq
auth_mechanisms:认证机制;(说明我们使用默认明文机制还是AMQP的认证机制,都是使用SASL(简单认证安全层)认证的,默认使用AMQP的明文认证机制进行认证)
default_user :链接rabbitmq的默认用户(默认时raabitmq_backend internel,rabiitmq内建的后端用户)
(guest)
default_pass;用户默认密码
(guest)
default_permisson用户默认权限(对三组组件分别定义权限,支持模式匹配,表示可以访问哪些组件)
disk_free_limit:定义磁盘最少预留空间
heartbeat:所谓的broker与客户端之间,需要建立一个持久链接(并不是高可用集群的heartbeat),这里是定义heartbeat的消息时长的
(默认值580ms)
hipe_comple:erlang程序编译的程序代码性能较差,高性能erlang编译器交hipe, hipe_comple定义rabbitmq是否使用默认的erlang编译器还是使用高性能的erlang编译器,hipe可以将性能提高20%-40%
(是否使用hipe-comple来实现erlang程序编译的)
默认false,表示不使用的,要使用,改为true
log_levels日志级别 默认info(none不记录|error错误日志级别|warning警告级别|info消息级别)
tcp_listeners:监听的地址和端口(默认只指定端口5672)
ssl_listeners:也支持ssl协议,基于ssl通信协议监听的地址和端口(也是5672.监听在同一端口只不过看你是否启用ssl功能)启用需要用ssl opens进行定义
vm_memory_high_watermark:内存高水位标记,主要定义最少空闲内存空间
在这里插入图片描述
**运行时参数配置
rabbitmqctl命令:有许多子命令 **在这里插入图片描述在这里插入图片描述在这里插入图片描述
停止整个erlang虚拟机进程
在这里插入图片描述
只是停虚拟机上的应用程序(类似运行jvam里面的tomcat进程,把toncat关闭而不是虚拟机)
在这里插入图片描述
设置集群参数
在这里插入图片描述
清除和列出的
在这里插入图片描述
列出队列,交换器,绑定器,频道,consumer
在这里插入图片描述
显示状态
在这里插入图片描述f
status查看当前状态在这里插入图片描述
运行的服务有哪些
在这里插入图片描述
erlang的版本号
在这里插入图片描述
整个服务的运行状态在这里插入图片描述
内存的高水位标记
在这里插入图片描述
监听器,集群25672,rabbitmq 5672
在这里插入图片描述
正在运行中的队列有多少,0表示没有使用
在这里插入图片描述

能配置工作特性的参数
运行时参数: rabbitmq命令
set_parameter 设定参数
clear_parameter 清空参数
其他的是管理组件的不是配置参数
还有用来设定或清除策略
在这里插入图片描述
用来设定或清除策略在这里插入图片描述
设定权限
在这里插入图片描述
设定内存高水位标记
在这里插入图片描述在这里插入图片描述
绝大多数都无需修改

如何去实现最简单的rabbitmq功能
在这里插入图片描述在这里插入图片描述

停止rabbitmq
在这里插入图片描述
停止指定的应用程序
在这里插入图片描述在这里插入图片描述
服务还在但是应用全停了在这里插入图片描述
继续使用,start_app在这里插入图片描述
添加用户
在这里插入图片描述
列出用户
在这里插入图片描述在这里插入图片描述
设定用户标签,想让用户称为管理员,设定为指定tag即可
在这里插入图片描述
在这里插入图片描述
设定为空就删除了tag在这里插入图片描述
修改密码
在这里插入图片描述
清空密码
在这里插入图片描述
删除用户
在这里插入图片描述

用户管理:
rabbitmqctl命令:
add_user
delete_user
change_passwd
set_user_tags
list_users

**虚拟主机:可以理解为虚拟broker
add_vhost
delete——vhost
list_vhost
**
权限管理:

*列出权限,虚拟主机vhost,层级都是从跟开始的
/下的所有主机,guest的用户访问权限时 。
是一种正则表达式的通配机制,三个组件(exchange ,bindings,queue)针对用户哪些虚拟主机,哪些组件,有访问权限,
所以可以指定某个虚拟主机的某个特定的权限,.匹配所有组件
在这里插入图片描述
虚拟主机相关的管理命令
在这里插入图片描述
指明虚拟主机的
在这里插入图片描述在这里插入图片描述
创建虚拟主机+路径(比如/下的某个虚拟主机),是一个树状结构
delete_vhosts删除虚拟主机
在这里插入图片描述
可以通过指明vhostinfoitem来指明,基于哪个item来过滤,来显示虚拟主机哪些个属性信息在这里插入图片描述

定义号虚拟主机后就可以定义权限了
list_permissions列出权限,以虚拟主机为中心查看权限
在这里插入图片描述
只看某一个用户的权限,以用户为中心查看权限
第一个.代表配置文件
第二个.代表写权限
第三个.代表读权限
在这里插入图片描述
**设定权限需要指明这个用户对哪个虚拟主机有访问权限,包括读权限,写权限和配置文件(三个组件,交换器,绑定器,队列)
-p指明虚拟主机,用户,权限(可以指定特定的配置文件,也可以.

list_permissions 可以根据虚拟主机来显示权限的,不指定就是跟/
路径下的其他虚拟主机也会显示权限
在这里插入图片描述
如果指明test用户是administration,并且指明对跟有访问权限,在这里插入图片描述
尝试换用户,test pass在这里插入图片描述在这里插入图片描述
只显示myhost2上的在这里插入图片描述administrator只是myhost2的管理员在这里插入图片描述
权限管理有两类,以用户为中心,以虚拟主机位中心在这里插入图片描述

列出有多少交换器,队列等,一般只能查看组件,不能用来管理组件
在这里插入图片描述
用来设定访问机制的,参数是用来定义运行时组件特性的在这里插入图片描述
status状态查看命令

环境变量查看:
environment
在这里插入图片描述
当前的每一个环境变量及其设定的值,也使用字典列表等方式来定义
binary属性的键值对作为其值
在这里插入图片描述
report用来生成系统的状态报告的在这里插入图片描述
整个系统相关结果的报告在这里插入图片描述在这里插入图片描述
**执行erlang底层表达式:
eval
**

关闭持久链接
close_connection <connectionid

还可以启动对应的追踪功能,启动追踪功能,可以实现对一个虚拟主机上的所有访问执行详细追踪,使用trace_on在这里插入图片描述在这里插入图片描述
设定内存的高水位标记
在这里插入图片描述在这里插入图片描述
添加用户,虚拟主机,权限可以都在web接口实现在这里插入图片描述
在这里插入图片描述
哪些用户对参数由权限,set进行设置在这里插入图片描述
对应rabbitmq还有resetful风格的接口在这里插入图片描述在这里插入图片描述
overview,可以基于post的方法完成设定
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值