前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RabbitMQ系列笔记介绍篇

RabbitMQ系列笔记介绍篇

作者头像
陌无崖
发布2019-08-16 17:28:15
4020
发布2019-08-16 17:28:15
举报
文章被收录于专栏:陌无崖知识分享

导语

rabbitMQ是市面上应用很广的一种应用间传送数据的通信方式,是由erlang语言开发,主要特点就是异步通信,实现服务与服务之间的解耦。

特点

  • 可靠性:提供了持久化、传输时确认、发布时确认、跟踪机制
  • 灵活的路由:有四种交换器负责分发路由
  • 集群:支持集群
  • 多种协议:支持STOMP、和MQTT协议
  • 多语言:支持大部分流行语言
  • 友好的界面:提供了直观的管理界面
  • 可扩展:提供了许多插件。

应用场景

  • 高并发排队机制:比如在秒杀场景,提示用户正在等待,在队列里存放了有序的待处理的消息,而不是所有的消息杂乱无章
  • 服务之间的解耦:服务之间可通过发布订阅的模式,让Rabbitmq队列通知订阅了该消息的服务执行相关代码。

工作机制

在其通信的过程中,有两个重要的角色,分别是生产者和消费者,需要强调的是RabbitMQ服务器并不产生任何消息,它只负责传递数据,由生产者创建消息,发布到RabbitMQ服务器,而消费者订阅了消息,并从RabbitMQ服务器获取消息。如下图所示

分配生产者的消息

在RabbitMQ服务器中,存在一个交换器,可以理解成交换机拿了很多队列的钥匙,并把相应的消息放在队列中,在服务器中有四种交换器。下面我们逐个来进行介绍:

  • direct:直连交换机,一个交换机对应了不同的队列,队列需要绑定routeing_key,消息需要指定一个binding_key,当消息被发送到交换机时,就能准确的送到指定的队列去了。
  • Fanout:扇形交换机,见名知意可知,这是一个广播类型的交换机,属于最简单的交换机类型,它收到消息后会将消息分发到所有绑定在自己身上的队列。
  • Topic:主题交换机,该交换机时对直连交换机的扩展,可以将消息发送到多个队列,实现的方法是为我们的routing_key指定规则,同样binding_key也需要指定规则,类似于模糊匹配,*代表一个单词,#代表任意数量的单词。
  • Headers:首部交换机,是通过headers的信息进行路由,绑定到队列的时候需要定义Hash的数据结。

五种工作模式

简单队列

一个生产者对应一个消费者

work模式

一个生产者对应了多个消费者,但只有一个消费者可以获得消息,可用于负载均衡,让效率高的消费者负责多个消息

发布订阅模式

一个消费者将消息首先发送到交换器,交换器绑定到多个队列,然后被监听该队列的消费者所接收并消费。图中的X代表交换器

路由模式

可以用于消费者选择性的接收消息

主题模式

即我们的topix交换机进行模糊绑定。

以上的工作模式只需了解工作流程,具体的代码,后面的博客中会陆续讲到。

历史推荐

30天习惯养成计划序!

Go Context深入学习笔记

关于log日志的深入学习笔记

基于Nginx和Consul构建高可用及自动发现的Docker服务架构

protoc语法详解及结合grpc定义服务

Golang中Model的使用

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 golang技术杂文 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导语
  • 特点
  • 应用场景
  • 工作机制
  • 分配生产者的消息
  • 五种工作模式
    • 简单队列
      • work模式
        • 发布订阅模式
          • 路由模式
            • 主题模式
            相关产品与服务
            负载均衡
            负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档