| |
|
开发:
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支持的消息模式: 引入依赖:
? 工具类包装: 第一种:基本模型(直连) ? 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的时候使用通配符。 通配符: ????????*:只匹配一个词 ????????#:匹配零个、一个或多个词 生产者: ? ?消费者: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |