Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RabbitMQ introduction
Search
baishen
June 06, 2014
Programming
110
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RabbitMQ introduction
baishen
June 06, 2014
Other Decks in Programming
See All in Programming
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
240
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
440
源内ハンズオン概要編
hideg
0
180
VibeCodingからAgenticWorkflowへ
starfish719
0
480
Built Our Own Background Agent at LayerX
layerx
PRO
10
5.5k
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
230
運用ダッシュボードの設計を誰も教えてくれないのだけどみなさんどうしてるんですか? - チームに監視するという文化を根付かせるための第一歩を踏みたい -
satoshi256kbyte
1
120
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.8k
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
330
関東Kaggler会_NVIDIA_Nemotron_コンペ_振り返り
rick_ds
0
580
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.5k
Google Apps Script で Ruby を動かす
kawahara
0
230
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
1
10k
The Pragmatic Product Professional
lauravandoore
37
7.4k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.8k
Accessibility Awareness
sabderemane
1
180
The Cult of Friendly URLs
andyhume
79
7k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
3
430
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
How GitHub (no longer) Works
holman
316
150k
What's in a price? How to price your products and services
michaelherold
247
13k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Transcript
RabbitMQ介绍 @白珅 @白珅 2014年06月06日
Agenda Agenda 消息队列介绍 • 消息队列介绍 • AMQP介绍 AMQP介绍 • RabbitMQ介绍
• RabbitMQ持久化 • RabbitMQ集群 RabbitMQ集群
什么是消息队列 什么是消息队列 • Message Queue • 应用之间的通信工具 应用之间的通信工具 • 提供异步通信方式
• 存储消息的容器 • Pubish/Subscribe模式 Pubish/Subscribe模式
为什么使用消息队列 为什么使用消息队列 • 减少耦合:使用异步的方式分离业务,不 阻塞正常业务 • 扩展性:在不影响现有业务的情况下,增 加新业务 加新业务 •
冗余:处理数据失败时,可以将消息保存 在队列中
AMQP协议 AMQP协议 • Advanced Message Queuing Protocol • 由金融领域的软件专家发起 由金融领域的软件专家发起
• 全行业广泛使用的消息队列规范 • 面向消息、队列、路由 • 可靠性 安全性要求严格 可靠性、安全性要求严格 • 主要实现:ActiveMQ、ZeroMQ、RabbitMQ
RabbitMQ RabbitMQ 完全兼容 协 • 完全兼容AMQP协议 • 基于Erlang语言开发,高稳定性和高性能 基于Erlang语言开发,高稳定性和高性能 •
高可靠性,支持持久化 • 强大的路由功能 • 支持集群和负载均衡 支持集群和负载均衡 • 客户端支持多种语言开发 • 完全开源
RabbitMQ关键概念 RabbitMQ关键概念 • P d 消息生产者 • Producer:消息生产者 • Consumer:消息消费者
• Broker:中间人,消息队列服务器实体 • Exchange:消息交换机。接受消息和路由信息,然后将消息发 送给消息队列 • Queue:消息队列载体,每个消息都会被投入到一个或多个队 Queue:消息队列载体,每个消息都会被投入到 个或多个队 列 • Binding:绑定,把exchange和queue按照路由规则绑定起来 • Routing Key 路由关键字 exchange根据这个关键字进行消息 • Routing Key:路由关键字,exchange根据这个关键字进行消息 投递 • Vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同 用户的权限分离 用户的权限分离 • Channel:消息通道,在客户端的每个连接里,可建立多个 channel,每个channel代表一个会话任务
RabbitMQ消息传递流程 RabbitMQ消息传递流程
RabbitMQ路由方式 RabbitMQ路由方式 广播式 不论消息路由关键字是什 • Fanout:广播式。不论消息路由关键字是什 么,这条消息都会被路由到所有与该交换 机绑定的队列中 机绑定的队列中 •
Direct:直接式。通过精确匹配消息的路由 直接式 精确匹配消息的路由 关键字,将消息路由到零个或多个队列中 • Topic:主题式 通过小的路由关键字和绑 Topic:主题式。通过小的路由关键字和绑 定关键字的模式匹配,将消息路由到绑定 的队列中 绑定关键字支持通配符:*匹配 的队列中。绑定关键字支持通配符: 匹配 一个词组,#匹配零个或多个词组
RabbitMQ路由方式 RabbitMQ路由方式
RabbitMQ持久化 RabbitMQ持久化 默 不持久化 消息保存在 中 重启消 • 默认不持久化,消息保存在ram中,重启消 失
• 持久化,消息保存到disk,重启不消失 设置持久化方式 • 设置持久化方式: • • exchange exchange设为 设为durable durable g g 设为 设为 • • queue queue设置为 设置为durable durable 的 的 设为 设为 • • message message的 的Delivery Mode Delivery Mode设为 设为2 2
RabbitMQ集群 RabbitMQ集群 • 单点部署可靠性差,实际使用时按通常会 部署成cluster • exchange和queue分布在各个节点,消息只 保存在一个节点 保存在一个节点 •
优点: 节省存储空间,不用同步数据,性能 好 • 缺点: 可靠性较差 一个节点挂了 存储在 • 缺点: 可靠性较差, 个节点挂了,存储在 这个节点的消息无法读取
RabbitMQ集群 RabbitMQ集群
RabbitMQ mirror queue集群 RabbitMQ mirror queue集群 节点分为 和 收到消息后 •
节点分为master和slave,master收到消息后 会在各个slave节点各保存一份 • master收到consumer的ack后,才会删除消 息 并同时删除slave节点的消息 息,并同时删除slave节点的消息 • 若master节点失效,则mirror queue会自动 选举出一个节点作为master • 前端可以加一个proxy进行负载均衡 • 前端可以加 个proxy进行负载均衡
RabbitMQ mirror queue集群 RabbitMQ mirror queue集群
RabbitMQ负载均衡 RabbitMQ负载均衡
Thank you!