IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> RabbitMQ工作模式 -> 正文阅读

[大数据]RabbitMQ工作模式

RabbitMQ支持的消息模式:

引入依赖:

<dependency>
    <groupId>com.rabbitmq</groupId>
    <artifactId>amqp-client</artifactId>
</dependency>

?

工具类包装:

第一种:基本模型(直连)

?

P:生产者,发送消息的程序

C:消费者,消息的接受者,等待消息的到来,消费消息

queue(红色部分):消息队列。类似于邮箱,可以缓存消息,生产者投递消息,消费者获取消息。

开发生产者:

开发消费者:

?结果(生产者):

打印(消费者):

?第二种:工作队列模型(work quene)

work quene:任务模型。当消息处理比较耗时时,可能生产消息的速度会远远大于消费的速度,造成消息堆积。可以使用多个消费者绑定到一个队列,共同消费。

?

P:生产者,发送消息的程序

C1:消费者,消息的接受者,等待消息的到来,消费消息

C2:消费者,消息的接受者,等待消息的到来,消费消息

生产者:

消费者1:

消费者2:

?结果(生产者):

?打印(消费者1):

?打印(消费者2):

?默认情况下,rabbitMQ会按顺序将每个消息发送给消费者,平均而言每个消费者都会收到相同数量的消息,这种分发消息的方式为循环。

消息自动确认机制:

????????当开启消息自动确认机制后,消费者会从队列中拿到所有消息。但如果消费者因为某些问题在处理消息过程中突然宕机,则可能会造成消息的丢失。希望处理消息过程中,某个消费者宕机了,可以将未完成的消息交给其他消费者处理,避免消息丢失

????????为了避免消息丢失,RabbitMQ支持消息确认。消费者发送回确认,以告知RabbitMQ已经接收,处理了特定的消息,并且RabbitMQ可以自由删除它。

????????如果消费者因为某些原因宕机(通道关闭,连接关闭,TCP连接丢失),而无需发送ack,RabbitMQ将 了解消息未完全处理,并对其重新排队。如果同时有其他消费者在线,它将很快重新分发给其他消费者。

能者多劳:处理消息能力好的消费者处理更多任务,处理能力差的分发较少任务

实现:

????????1.关闭消息自动确认

????????2.设置同一时刻服务器只发送一条消息给同一消费者

????????3.开启消息的手动确认

?第三种:发布/订阅模型之fanout(发布/订阅模式)

fanout:广播模式;

消息发送流程:

????????可以有多个消费者

????????每个消费者有自己的队列

????????每个队列都要绑定到交换机上

????????生产者发送消息只能发送到交换机上

????????交换机来决定给哪个队列,而生产者无法决定

????????交换机把消息发送给绑定过的所有队列

????????队列里的消费者都能拿到消息(实现一条消息被多个消费者消费)

生产者:

?

消费者:

RabbitMQ消息模型的核心思想(core idea): 生产者会把消息发送给RabbitMQ的交换中心(Exchange),Exchange的一侧是生产者,另一侧则是一个或多个队列,由Exchange决定一条消息的生命周期–发送给某些队列,或者直接丢弃掉。

第四种:发布/订阅模型之routing(路由模式)

routing:发布/订阅模型-直连。

要求:

????????队列与交换机绑定,不能任意绑定,而需要指定一个路由key

????????生产者向交换机发送消息时,必须指定消息的路由key

?

?P:生产者向交换机发送时会指定一个路由key

X:接收生产者消息,把消息传递给与路由key匹配的队列

C1:消费者,其所在的队列指定了需要路由key 为error的消息

C2:消费者,其所在的队列指定了需要路由key 为info的消息

生产者:

?消费者:

?第五种:发布/订阅模型之topics(主题模式)

topics(主题模式):topics类型交换机可以让队列绑定在路由key的时候使用通配符。

通配符:

????????*:只匹配一个词

????????#:匹配零个、一个或多个词

生产者:

?

?消费者:

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-28 09:24:49  更:2021-08-28 09:26:49 
 
开发: 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:14:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码