Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RabbitMQ introduction

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

RabbitMQ introduction

Avatar for baishen

baishen

June 06, 2014
Tweet

Other Decks in Programming

Transcript

  1. AMQP协议 AMQP协议 • Advanced Message Queuing Protocol • 由金融领域的软件专家发起 由金融领域的软件专家发起

    • 全行业广泛使用的消息队列规范 • 面向消息、队列、路由 • 可靠性 安全性要求严格 可靠性、安全性要求严格 • 主要实现:ActiveMQ、ZeroMQ、RabbitMQ
  2. RabbitMQ RabbitMQ 完全兼容 协 • 完全兼容AMQP协议 • 基于Erlang语言开发,高稳定性和高性能 基于Erlang语言开发,高稳定性和高性能 •

    高可靠性,支持持久化 • 强大的路由功能 • 支持集群和负载均衡 支持集群和负载均衡 • 客户端支持多种语言开发 • 完全开源
  3. 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代表一个会话任务
  4. RabbitMQ路由方式 RabbitMQ路由方式 广播式 不论消息路由关键字是什 • Fanout:广播式。不论消息路由关键字是什 么,这条消息都会被路由到所有与该交换 机绑定的队列中 机绑定的队列中 •

    Direct:直接式。通过精确匹配消息的路由 直接式 精确匹配消息的路由 关键字,将消息路由到零个或多个队列中 • Topic:主题式 通过小的路由关键字和绑 Topic:主题式。通过小的路由关键字和绑 定关键字的模式匹配,将消息路由到绑定 的队列中 绑定关键字支持通配符:*匹配 的队列中。绑定关键字支持通配符: 匹配 一个词组,#匹配零个或多个词组
  5. RabbitMQ持久化 RabbitMQ持久化 默 不持久化 消息保存在 中 重启消 • 默认不持久化,消息保存在ram中,重启消 失

    • 持久化,消息保存到disk,重启不消失 设置持久化方式 • 设置持久化方式: • • exchange exchange设为 设为durable durable g g 设为 设为 • • queue queue设置为 设置为durable durable 的 的 设为 设为 • • message message的 的Delivery Mode Delivery Mode设为 设为2 2
  6. RabbitMQ集群 RabbitMQ集群 • 单点部署可靠性差,实际使用时按通常会 部署成cluster • exchange和queue分布在各个节点,消息只 保存在一个节点 保存在一个节点 •

    优点: 节省存储空间,不用同步数据,性能 好 • 缺点: 可靠性较差 一个节点挂了 存储在 • 缺点: 可靠性较差, 个节点挂了,存储在 这个节点的消息无法读取
  7. RabbitMQ mirror queue集群 RabbitMQ mirror queue集群 节点分为 和 收到消息后 •

    节点分为master和slave,master收到消息后 会在各个slave节点各保存一份 • master收到consumer的ack后,才会删除消 息 并同时删除slave节点的消息 息,并同时删除slave节点的消息 • 若master节点失效,则mirror queue会自动 选举出一个节点作为master • 前端可以加一个proxy进行负载均衡 • 前端可以加 个proxy进行负载均衡