RabbitMQ的学习笔记

目录

一、MQ的介绍

1.消息队列(管道)

2.消息的两种分发机制

3.消息的确认模式

二、RabbitMQ的介绍

1.RabbitMQ

2.AMQP

3.基本对象

三、使用python向RabbitMQ发送消息


一、MQ的介绍

1.消息队列(管道)

先进先出的队列,队列中存放的是消息数据,主要是为了不同进程间的通信。

不使用消息队列,则进程间在传递消息时的耦合太高了,改动一个进程,另一个必须血要更改了,采用消息中间件,则可以避免此问题的发生。

生产者发送消息到消息中兴,消费者从消息中心取消息。

2.消息的两种分发机制

(1)轮询分发:每个消费者获得相同的消息数量,而不用考虑每个消息的任务时长

(2)公平分发:避免“忙的忙死,闲的闲死”保证每个都是正常的消费。

 --公平分发的限制机制使用basicQos( prefetchCount = 1)方法,来限制RabbitMQ只发不超过1条的消息给同一个消费者。当消息处理完毕后,有了反馈,才会进行第二次发送。)

---使用公平分发,必须关闭自动应答,改为手动应答。

3.消息的确认模式

服务端获取消息是否被消费;

(1)自动确认:只要消息从队列中被消费者获取,无论消费者获取到消息后是否成功消费,都认为是消息已经成功消费。

(2)手动确认:消费者从队列中获取消息后,服务器会将该消息标记为不可用状态,等待消费者的反馈,如果消费者一直没有反馈,那么该消息将一直处于不可用状态。

二、RabbitMQ的介绍

1.RabbitMQ

是实现MQ众多实现中的一种。RabbitMQ是基于AMQP实现的,服务器使用Erlang写的,客户端则支持多种语言。

2.AMQP

高级消息队列协议,应用层开放标准,为面向消息的中间件设计;

              消息中间件用于组件之前的解耦,消息发送者将消息发送给中间件,消息接收者从中间件接收消息,两者不必互相彼此知道。

3.基本对象

(1)Connection:是RabbitMQ的socket链接,它封装了socket协议相关部分逻辑

(2)ConnectionFactory:ConnectionFactory为Connection的制造工厂

(3)Channel:Channel是我们与RabbitMQ打交道的最重要的一个接口

(4)Queue:内部对象,用于存储消息,可分为:

注:P生产消息并最终投递到Queue中,消费者C从Queue中获取消息并消费。

(5)Message acknowledgment:消息回执,用于解决宕机时,消息没有被处理完成丢失的情况,消费者消费之后发送回执RabbitMQ,RabbitMQ收到之后然后从queue中删除此消息。如果RabbitMQ没收到,则将消息发给其他消费者处理。

(6)Message durability:消息持久化,降低消息丢失的可能性

(7)Prefetch count:生产者消费者一对多时,限定每个消费者处理的消息数,保证一个处理完成之后再处理下一个,避免产生某个消费者的消息数产生积压。

(8)Exchange:生产者进行消息投递时,先将消息发送到交换器,然后由交换器将消息路由到多个queue中

(9)Binding key:指定当前Exchange下,什么样的RoutingKey会被下派到当前绑定的Queue中。

(10)Exchange Types:消息投递机制类型

  ---- fanout:把所有发送到该Exchange的消息路由到所有与它绑定的Queue中

---- direct:把消息路由到那些binding key与routing key完全匹配的Queue中

---- topic

---- headers

三、使用python向RabbitMQ发送消息

使用pika给rabbitMQ发送消息队列方法:

(1)创建PlainCredentials实例

(2)创建Connection对象

(3)使用Connection的实例创建channel

(4)使用Connection的实例声明 (queue_declare)

(5)使用Connection的实例发布消息 (basic_publish)

(6)关闭链接

<待后续补充...>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值