| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 常用消息队列介绍 -> 正文阅读 |
|
[大数据]常用消息队列介绍 |
一、RocketMQ 1.1 MQ的应用场景
交互流程:
1.2 RocketMQ介绍 是阿里开源的一款非常优秀的中间件产品,现已成为apache基金会的顶级项目。 1.3消息队列技术选型对比 消息队列有哪些 activeMq、RabbitMQ,ZeroMQ、Kafka、MetaMQ、Redis RabbitMQ优点:
RabbitMQ缺点:
RocketMQ优点:
RocketMQ缺点:
Kafka优点:
Kafka缺点:
1.4Rocket三种消息发送方式
producer向broker发送消息,执行API时同步等待,直到broker服务器返回发送结果。 2.异步消息 producer向broker发送消息时指定消息发送成功及发送异常的回调方法,调用API后立即返回,producer发送消息线程不阻塞,消息发送成功或失败的回调任务在一个新的线程中执行 3.单向消息 producer向broker发送消息,执行API时直接返回,不等待broker服务器的结果 1.5Rocket消息结构 RocketMQ的消息包括基础属性和扩展性两部分:
2.扩展属性
1.6消息中间件对比
1.7RocketMQ启动命令
2.RibbitMQ 2.1 概念
应用场景:
将不需要同步处理的并且耗时长的操作由消息队列通知消息接收方进行异步处理。提高了应用程序的响应时间。 2. 应用程序解耦合 MQ相当于一个中介,生产方通过MQ与消费方进行交互,它将应用程序进行解耦合。 其他的消息队列: ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ、Redis RibbitMQ的优点:
2.2 AMQP与JMS协议 AMQP是一套公开的消息队列协议,它从协议层定义消息通信数据的标准格式,主要就是解决MQ市场上协议不统一的问题。RabbitMQ是遵循AMQP标准协议开发的MQ服务。 JMS是java提供的一套消息服务API标准,目的是为所有的java应用程序提供统一的消息通信的标准,只要遵循JMS标准的应用程序之间都可以进行消息通信。 两者的区别: JMS是java语言专属的消息服务标准,它是在api层定义标准,并且只能用于java应用;而AMQP是在协议层定义的标准,是跨语言的。 2.3 RabbitMQ的工作原理 组成部分说明: Broker:消息队列服务进程,该进程有两个部分Exchange和Queue Exchange:消息队列交换机,按一定的规则将消息路由转发到某个队列,对消息进行过滤。 Queue:消息队列,存储消息的队列,消息到达队列并转发给指定的消费方。 Producer:消息生产者,将消息发送到MQ Consumer:消息消费者,接收MQ转发的消息 2.4 消息发布接收流程 --发送消息--
--接收消息--
2.5 工作模式
Work queues简单模式:配置消息队列即可,有默认的交换器 2.Publish/Subscribe订阅发布模式:配置消息队列、交换器、消息队列和交换器的绑定;交换器对象:FanoutExchange 3.Routing路由模式:一对多,在订阅发布模式升级,在交换器绑定中加入routing key在生产者发送中加入路由key;交换器对象:DirectExchan ge 4.Topic主题模式(常用):*.*,#;#可以匹配多个值,*只能匹配一个值;交换器对象:TopicExchange 5.Header模式:可以传参数 1.工作模式发布订阅模式: 1.每个消费者监听自己的队列 2.生产者将消息发给broker,由交换机将消息转发到绑定此交换机的每个队列,每个绑定交换机的队列都将接收到 消息路由模式: 1.每个消费者监听自己的队列,并设 置routingKey 2.生产者将消息发给交换机,由交换机根据rountingkey来转发消息到指定的队列 topics主题模式: 1.队列绑定交换机 指定通配符: 2.通配符规则:中间以"."分割,符号#可以匹配多个,*只能匹配一个 Header模式: header模式与routing不同的地方在于 ,header模式取消rountingkey,使用header中的key/value(键值对)匹配 3 3.1RabbitMQ特点
3.2 AMQP是什么
RabbitMQ 中的交换器、交换器类型、队列、绑定、路由键等都是遵循的 AMQP 协议中相 应的概念。目前 RabbitMQ 最新版本默认支持的是 AMQP 0-9-1。 3.3 AMQP协议3层 Module Layer:协议最高层,主要定义了一些客户端调用的命令,客户端可以用这些命令实现自己的业务逻辑。 Session Layer:中间层,主要负责客户端命令发送给服务器,再将服务端应答返回客户端,提供可靠性同步机制和错误处理。 TransportLayer:最底层,主要传输二进制数据流,提供帧的处理、信道服用、错误检测和数据表示等。 3.4 RabbitMQ是什么 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。 PS:也可能直接问什么是消息队列?消息队列就是一个使用队列来通信的组件 3.5 AMQP模型的几大组件
3.6 说说生产者Producer和消费者Consumer --生产者--
--消费者--
3.7 Broker服务节点、Queue队列、Exchange交换器
3.8 如何保证消息的可靠性
3.9 什么是RoutingKey路由键 生产者将消息发送给交换器的时候,会指定一个RoutingKey,用来指定这个消息的路由规则,这个RoutingKey需要与交换器类型和绑定键联合使用才能最终生效 3.10 什么是Binding绑定 通过绑定交换器和队列关联起来,一般会指定一个BindingKey,这样RabbitMQ就知道如何正确将路由消息到队列了。 3.11 交换器无法根据自身类型和路由键找到符合条件队列时,有哪些处理
3.12 什么是死信队列 DLX,全称Dead-Letter-Exchange,死信交换器,死信邮箱。当消息在一个队列中变成死信之后,她就能被重新发送到另一个交换器中,这个交换器就是DLX,绑定DXL的队列就称之为死信队列。 3.13 导致死信的几种原因
3.14 延迟队列 存储对应的延迟消息,指当消息被发送以后,并不想让消费者立刻拿到消息,而是等待特定时间后,消费者才能拿到这个消息进行消费。 3.15 优先级队列
3.16 事务机制
3.17 什么是发送确认机制 生产者把信道设置为confirm确认模式,设置后,所有再改信道发布的消息都会被指定一个唯一的ID,一旦消息被投递到所有匹配的队列之后,RabbitMQ就会发送一个确认(Basic.Ack)给生产者(包含消费的唯一ID),这样生产者就知道消息到达对应的目的地了。 3.18 消费者获取消息的方式
3.19 消费者由于某些原因无法处理当前接受的消息如何来拒绝
3.20 消息传输如何保证层级
3.21 集群中的节点类型
3.22 RabbitMQ中消息可能有的几种状态
3.23 在哪种场景下使用消息中间件
3.24 如何保证RabbitMQ消息队列的高可用 RabbitMQ有三种模式:单级、普通集群、镜像集群模式
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 17:01:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |