RabbitMQ剖析:消息中间件的工作原理和使用

概述

主流的消息中间件主要有:ActiveMQKafkaRabbitMQRocketMQ等等......,而我们今天的主角是:RabbitMQRabbitMQ基于AMQP协议来实现的,AMQP的和主要特征是面向消息、队列、路由(包括点对点和发布 / 订阅)、可靠性、安全,RabbitMQ支持多种语言,有消息确认机制和持久化机制,保证数据不丢失的前提做到可靠性、可用性。另外,如今同类型组件市场上,RabbitMQ也占有率还是比较高,也是很多中小厂比较青睐的一款消息中间件产物,无非得益于它性能好、容易上手等优点。

最近有想写做一个消息队列专栏,总结记录自己在使用消息队列实战经验顺便做一些分享,本篇文章主要讲述RabbitMQ的底层实现原理,对于新手来说能起到很好的了解作用,对于使用过MQ的开发者,也能起到一定的帮助,在介绍RabbitMQ之前,有必要先了解一下什么是AMQP协议。

什么是AMQP协议?

AMQP的全称:Advanced Message Queuing Protocol(高级消息队列协议),它是消息队列的一个规范,其中定义个很多核心的概念,AMQPJMS(Java Message Service)Java平台的专业技术规范类似,同样提供了很多面向中间件的API,用于两个应用程序之间,或者分布式系统之间的发送消息,进行异步通信。

AMQP核心概念

AMQP组件 说明
Server 又称Broker,接受客户端的连接,实现AMQP实体服务
Connection 连接,应用于程序与Broker的网络连接
Channel 网络通道,几乎所有的操作都是在channel中进行的,channel是进行消息读写的通道,客户可以建立多个channel,每个channel代表一个会话任务
Message 消息,服务器与应用程序之间传送的数据,有PropertiesBody组成,Properties可以对消息进行修饰,比如消息的优先级,延迟等高级特性,Body是消息体内容
Virtual host 虚拟地址,用于进行逻辑隔离,最上层的消息路由,一个Virtrual host里面可以有若干个ExchangeQueue,用一个Virtrual host里面不能有相同名字的ExchangeQueue
Exchange 交换机,接收消息,根据路由键转发消息到绑定的队列
Routingkey 生产者架构消息发给交换器的时候,会指定一个RoutingKey,用来指定这个消息的路由规则,通过RoutingKey来决定消息流向哪里
Binding 绑定,RabbitMQ中通过绑定将交换器跟队列关联起来,在绑定的时候会指定一个BindingKey,这样RabbitMQ就知道如何正确的将消息路由到对应的队列中去了,也就是生产者将信息发送给交换器时,需要一个RoutingKey,当RoutingKeyBindingKey完全匹配时,消息会被路由到对应的队列中去
Queue 全名Message Queue,消息队列,保存消息并将他们转发给消费者

工作模型

  • 生产者只需要将消息投递到Exchange交换机中,不需要关注消息被投递到哪个队列。
  • 消费者只需要监听队列来消费消息,不需要关注消息来自于哪个Exchange
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值