一、RabbitMQ-简介

一、初识RabbitMQ

RabbitMQ是一个开源的消息队列和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,也就是说可以跨平台跨语言的进行数据共享。RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。

目前很多互联网公司如嘀嘀打车、美团、头条等都在使用RabbitMQ,这些公司选择使用RabbitMQ自然是因为它具有自己的许多优点:

  • RabbitMQ底层采用Erlang语言进行编写: Erlang语言由Ericson设计,专门为开发concurrent和distribution系统的一种语言,在电信领域使用广泛,对于数据信息的传递有着十分优越的性能。
  • 开源、性能优秀、稳定性保障
  • 与SpringAMQP完美整合、API丰富
  • 集群模式丰富、表达式配置、HA模式、镜像队列模型
  • 保证数据不丢失的前提做到高可靠性、可用性

二.AMQP协议

Advanced Message Queuing Protocol(AMQP)即高级消息队列协议。

以下协议内容采自: https://www.cnblogs.com/frankyou/p/5283539.html

1.AMQP模型

image

  • Broker: 接收和分发消息,RabbitMQ Server就是Message Broker,实现AMQP的实体服务。
  • Virtual Host: 虚拟主机,用于进行逻辑隔离,最上层的消息路由,一个Virtual Host里面可以有若干个Exchange和Queue,同一个Virtual Host里面不能有相同名称的Exchange和Queue。
  • Connection: publisher/consumer和Broker之间的TCP连接。断开连接的操作只会在client端进行,Broker不会断开连接,除非出现网络故障或Broker服务出现问题。
  • Channel: 几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道,客户端可建立多个Channel,每个Channel代表一个会话任务。如果每一次访问RabbitMQ都建立一个Connection,开销会很大,Channel作为轻量级的Connection极大减少了操作系统建立TCP connection的开销。
  • Exchange: 交换机,message到达broker的第一站,根据路由键转发消息到绑定的queue中去。常用的类型有:direct (point-to-point)、topic (publish-subscribe) 和 fanout (multicast)。
  • Queue: 消息队列,消息最终被送到这里等待consumer取走
  • Binding: exchange和queue之间的虚拟连接,binding中可以包含routing key。Binding信息被保存到exchange中的查询表中,用于message的分发依据。
  • Routing key: 一个路由规则,虚拟机可用它来确定如何路由一个特定消息。
  • Message: 消息,服务器和应用程序之间传送的数据,由Properties和Body组成。Properties可以对消息进行修饰,比如消息的优先级,延迟等高级特性Body则是消息体内容。
2.典型例子

image

生产者发送消息到broker server(RabbitMQ)。在Broker内部,用户创建Exchange/Queue,通过Binding规则将两者联系在一起。Exchange分发消息,根据类型/binding的不同分发策略有区别。消息最后来到Queue中,等待消费者取走。

在这个过程中,生产者在发送信息时候会指定发送到哪个exchange,并且指定路由规则。

3.Exchange类型

Exchange有多种类型,但是最常用的有Direct/Fanout/Topic三种

  • Direct: Message中的“routing key”如果和Binding中的“binding key”一致, Direct exchange则将message发到对应的queue中。

image

  • Fanout: 每个发到Fanout类型Exchange的message都会分到所有绑定的queue上去。

image

  • Topic: 根据routing key,及通配规则,exchange将分发到目标queue中,这也是比较常用的交换机类型。
    • Routing key中可以包含两种通配符,类似于正则表达式
      • "#"通配任何零个或多个word
      • "*"通配任何单个word

image

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值