消息队列MQ,AMQP和JMS内容讲解
树图思维导图提供 RabbitMQ第一节课脑图 在线思维导图免费制作,点击“编辑”按钮,可对 RabbitMQ第一节课脑图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:2ecd666b2f467b9a17cd5ee079f18f12
RabbitMQ01思维导图模板大纲
什么是消息队列
. 消息队列的作用
解耦
降低耦合度,几乎没有,使得两个模块之间没有直接关联影响
异步
异步意味着不等待任务结束
:主业务执行结束后, 从属业务通过MQ,异步执行
限流
削峰填谷
削峰填谷产生的问题:
对MQ的压力比较大
会让我们的系统长时间的处于最高性能消耗
. 消息队列的缺点
系统可用性降低。
依赖服务越多,服务越容易挂掉。
需要考虑消息丢失、消息重复消费、消息传递的顺序 性
系统复杂性提高
需要考虑消息丢失、消息重复消费、消息传递的顺序 性
业务一致性
主业务和从属业务一致性的处理
A 系统处理完业务,通过 MQ 给B、C、D三个系统发消息数据,如果 B 系统、C 系统处理成功,D 系统处理失败。如何保证消息数据处理的一 致性?
MQ的两种实现方式
JMS:Java Message Service
Java消息服务
应用程序接口,是一个 Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或 分布式系统中发送消息,进行异步通信
AMQP
Advanced Message Queuing Protocol
一个提供统一消息服务 的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的 中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间 件不同产品,不同的开发语言等条件的限制。
2. AMQP和JMS的区别和联系
统一数据
JMS是定义了统一的接口,来对消息操作进行统一
AMQP是通过规定协议来统一数据交互的格式
语言
JMS限定了必须使用JAVA语言,
AMQP只是协议,不规定实现方式,因此是跨语言的
消息模型
JMS规定了两种消息模型,点对点,发布订阅;
而AMQP的消息模型更加丰富有五种常用;
常见的MQ产品有哪些
安装erlang环境
安装Rabbitmq
启动Rabbitmq相关配置
. rabbitmq的启动和停止
访问web界面
默认用户名:guest 默认密码:guest
页面说明
connections
无论生产者还是消费者,都需要与RabbitMQ建立连接 后才可以完成消息的生产和消费,在这里可以查看连接情况
channels:
通道,建立连接后,会形成通道,消息的投递获取依赖通 道
Exchanges:
交换机,用来实现消息的路由。
Queues:
队列,即消息队列,消息存放在队列中,等待消费,消费后 被移除队列。
添加用户
添加虚拟主机
虚拟主机:类似于mysql中的database。他们都是以“/”开头
设置权限
RabbitMQ结构及执行流程
简单模式:一个生产者发送消息,一个消费者接收消息
工作队列模式:一个生产者发送消息,允许有多个消费者,同一个消息, 只能被一个消费者消费,多个消费者之间是顺序竞争关系。
发布订阅模式:一个生产者发送消息,多个消息者接收消息。
.路由绑定模式:交换机和队列在绑定的时候,需要指定路由规则,生产者 发送消息时,也会指定路由规则,消息会存放到路由规则匹配的队列中, 消费者监听不同的队列则获取不同的消息。
通配符路由绑定模式:交换机和队列进行绑定的时候,通过通配符的方式 设置路由绑定规则,生产者发送消息时,会指定路由规则,发送消息的路 由规则会和绑定的路由规则进行匹配,匹配上就保存到对应的队列中。
测试见IdealWorkSpace/RabbitMQ/rabbitmq01
树图思维导图提供 中级 第10课 主再临与末世的预兆 在线思维导图免费制作,点击“编辑”按钮,可对 中级 第10课 主再临与末世的预兆 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:c09f757ed86ed6f708497e92e276013c
树图思维导图提供 十五部分 争端的解决 在线思维导图免费制作,点击“编辑”按钮,可对 十五部分 争端的解决 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:f6bb33386060c20c00d805177b179cf6