| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> RabbitMQ -> 正文阅读 |
|
[Java知识库]RabbitMQ |
RabbitMQ MQ: 使用 MQ 之后, 消息发送者 只需要 依赖 MQ ,不需要 依赖 其他服务 MQ 三大功能:
优点 : 访问的人员 进行 排队 , 使得 服务器 不会 因为 压力过大而导致 宕机
MQ的分类 ActiveMq kafka RocketMq RabbitMQ 由于使用 erlang语言 故支持多种语言 高并发性 性能较好 吞吐量达到万级 Mq 功能 完善 健壮 稳定 易用 跨平台 支持 AJAX 文档齐全 MQ 的选择 RabbitMq 概念 是一个 消息中间件 ,接受 并 转发 消息 主要用于 接收 存储 转发 消息数据 四项核心概念 生产者 交换机 队列 消费者 RabbitMq 核心部分 (6大模式) 简单模式 队列模式 发布订阅模式 路由模式 主题模式 发布确认模式 工作原理 Virtual host:出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务时,可以划分出 Connection:publisher/consumer 和 broker 之间的 TCP 连接 Channel(信道):如果每一次访问 RabbitMQ 都建立一个 Connection,在消息量大的时候建立 TCPConnection 的开销将是巨大的,效率也较低。Channel 是在 connection 内部建立的逻辑连接,如果应用程序支持多线程,通常每个 thread 创建单独的 channel 进行通讯,AMQP method 包含了 channel id 帮助客户端和 message broker 识别 channel,所以 channel 之间是完全隔离的。Channel 作为轻量级的 Connection 中的Channel 信道 极大减少了操作系统建立 TCP connection 的开销 Exchange(交换机):message 到达 broker 的第一站,根据分发规则,匹配查询表中的 routing key,分发消息到 queue 中去。常用的类型有:direct (point-to-point), topic (publish-subscribe) and fanout Queue:消息最终被送到这里等待 consumer 取走 Binding:exchange 和 queue 之间的虚拟连接,binding 中可以包含 routing key,Binding 信息被保存到 exchange 中的查询表中,用于 message 的分发依据 Mq 的使用
DeliverCallback 传递消息时的回调 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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 22:21:35- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |