RabbitMQ基础篇(一)

本系列博客主要从实践理论两个角度带着大家一步一步认识了解熟悉RabbitMQ,总共分为基础篇、进阶篇、高级篇。基础篇主要介绍一些 MQ 的基础概念,RabbitMQ 的历史背景,以及同类型的一些技术,搭建运行环境并且编写一个简单的程序,进阶篇我们将使用 RabbitMQ 做更多的实验,以实践的方式深入学习,高级篇会讲解一些 RabbitMQ 的高级应用,如何搭建 RabbitMQ 的高可用基础架构以及 RabbitMQ 集成的一些插件,并且总结 RabbitMQ 的设计思想等。

为什么使用 MQ

MQ 让我们的请求和处理实现了分离,客户端的请求服务器端可以异步的执行,执行完成后返回结果,这种解耦极大的提升了服务器响应客户端请求的能力,请求的异步化降低了服务器同一时间需要处理的请求数,对于我们构建高性能服务有很大的帮助。

什么是 RabbitMQ

关键字解释:
0、AMQP协议:
AMQP:Advanced Message Queuing Protocol 高级消息队列协议,是一个异步消息传递所使用的应用层协议规范。

1、ErLang:
Erlang是一种通用的并行程序设计语言,它由乔·阿姆斯特朗(Joe Armstrong)在瑞典电信设备制造商爱立信所辖的计算机科学研究室开发,目的是创造一种可以应付大规模开发活动的程序设计语言和运行环境。Erlang于1987年发布正式版本,最早是爱立信拥有的私有软件,经过十年的发展,于1998年发表开放源代码版本。
Erlang是运作于虚拟机的解释型语言,但是现在也包含有乌普萨拉大学高性能Erlang计划(HiPE)[2]开发的原生代码编译器,自R11B-4版本开始,Erlang也支持脚本方式执行。在编程范型上,Erlang属于多重范型编程语言,涵盖函数式、并行及分布式。循序运行的Erlang是一个及早求值, 单次赋值和动态类型的函数式编程语言。

语言特色:
跨进程通信:
在并行程序设计语言中,可以使用spawn函数,将特定的函数设置为独立的进程,之后可以做跨进程通信。
函数式程序设计
由于Erlang早期以Prolog开发制成,受语言特性影响,即成为函数式语言。
快速失败
在运行时期发生的错误,会由错误位置提交消息,发生错误的进程立刻停止执行。借由进程通讯机制,可以自动传递错误、捕捉错误,使其他进程能够帮助处理错误。

2、生产者:
消息的生成者和发送者,是整个消息生命周期的起点,创建消息设置标签,然后与RabbitMQ代理服务器(Erlang节点)建立连接,并且发送消息到对应的服务器上。

3、消费者:
消息的接受者和使用者,接收来自RabbitMQ代理服务器的消息,解析请求并且根据内容给出响应,注意消费者只接收到整条消息的一部分:payload,消息路由的过程中,消息的标签没有随着有效载荷一起传递;消费者接收的每一条消息都需要确认,只有确认了以后 RabbitMQ 才能安全地将服务器上的数据删除,并且发送新的消息给消费者。

4、消息:
消息由两部分组成:有效载荷(payload)和标签(label),有效载荷是生产者需要传输的具体数据内容,标签是对数据的描述,相当于元数据,消息发送的过程中只有payload 进行传播,label 不会发送给消费者。

5、队列:
队列相当于邮箱服务器的一个具名邮箱,RabbitMQ服务器相当于是邮局,一个邮局有多个邮箱,一个邮箱对应多个接收人,接收人会随时查看邮箱的来信,接收人对应这里的消费者,消费者订阅队列,并且不断的从队列中接收消息进行处理,当一个队列上有多个订阅的消费者的时候,消息会以循环(round-robin)的方式分发给不同的消费者。

  • 为消息提供了处所,消息在此等待消费。
  • 方便实现负载均衡,一个队列可以对应多个消费者,并且以循环的方式分发请求到不同的消费者。
  • 队列是 Rabbit 中消息的终点。

6、交换器:
类似于路由器,完成消息的分发,一个交换器可能绑定多个队列,多个交换器也可能绑定同一个队列,交换器根据路由键(routing key)将消息路由到对应的队列上。交换器的类型总共有四种:

  • direct: 如果路由键匹配的话,消息就被投递到对应的队列。服务器上面都有一个默认的交换器‘’,当创建一个队列 queue_name 的时候就会先绑定到默认的交换器上, 队列的名称会作为路由键。默认交换器 + 临时队列 ==> RPC 通信
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值