美文网首页Python小哥哥
Python操作rabbitMQ

Python操作rabbitMQ

作者: 我爱学python | 来源:发表于2019-05-14 16:37 被阅读34次

RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。

rabbitMQ是一款基于AMQP协议的消息中间件,它能够在应用之间提供可靠的消息传输。在易用性,扩展性,高可用性上表现优秀。使用消息中间件利于应用之间的解耦,生产者(客户端)无需知道消费者(服务端)的存在。而且两端可以使用不同的语言编写,大大提供了灵活性。

1、安装

2、rabbitMQ工作模型

简单模式


相关参数

1.no-ack = False

如果消费者遇到情况(its channel is closed, connection is closed, or TCP connection is lost)挂掉了,那么,RabbitMQ会重新将该任务添加到队列中。

回调函数中的 ch.basic_ack(delivery_tag=method.delivery_tag)

basic_comsume中的no_ack=False

接收消息端应该这么写:

2.durable :消息不丢失



3.消息获取顺序

默认消息队列里的数据是按照顺序被消费者拿走,例如:消费者1 去队列中获取 奇数 序列的任务,消费者1去队列中获取 偶数 序列的任务。

channel.basic_qos(prefetch_count=1) 表示谁来谁取,不再按照奇偶数排列

3、 exchange模型

1  .发布订阅

发布订阅和简单的消息队列区别在于,发布订阅会将消息发送给所有的订阅者,而消息队列中的数据被消费一次便消失。所以,RabbitMQ实现发布和订阅时,会为每一个订阅者创建一个队列,而发布者发布消息时,会将消息放置在所有相关队列中。

exchange type = fanout


2  .关键字发送

之前事例,发送消息时明确指定某个队列并向其中发送消息,RabbitMQ还支持根据关键字发送,即:队列绑定关键字,发送者将数据根据关键字发送到消息exchange,exchange根据 关键字 判定应该将数据发送至指定队列。

exchange type = direct


3  .模糊匹配

exchange type = topic


在topic类型下,可以让队列绑定几个模糊的关键字,之后发送者将数据发送到exchange,exchange将传入”路由值“和 ”关键字“进行匹配,匹配成功,则将数据发送到指定队列。

# 表示可以匹配 0 个 或 多个 单词

*  表示只能匹配 一个 单词

4、  基于rabbitMQ的RPC

1  .Callback queue 回调队列

一个客户端向服务器发送请求,服务器端处理请求后,将其处理结果保存在一个存储体中。而客户端为了获得处理结果,那么客户在向服务器发送请求时,同时发送一个回调队列地址 reply_to

2 .Correlation id 关联标识

一个客户端可能会发送多个请求给服务器,当服务器处理完后,客户端无法辨别在回调队列中的响应具体和那个请求时对应的。为了处理这种情况,客户端在发送每个请求时,同时会附带一个独有correlation_id属性,这样客户端在回调队列中根据correlation_id字段的值就可以分辨此响应属于哪个请求。

客户端发送请求:

  某个应用将请求信息交给客户端,然后客户端发送RPC请求,在发送RPC请求到RPC请求队列时,客户端至少发送带有reply_to以及correlation_id两个属性的信息

服务端工作流:

  等待接受客户端发来RPC请求,当请求出现的时候,服务器从RPC请求队列中取出请求,然后处理后,将响应发送到reply_to指定的回调队列中

客户端接受处理结果:

  客户端等待回调队列中出现响应,当响应出现时,它会根据响应中correlation_id字段的值,将其返回给对应的应用

服务端

客户端

相关文章

  • Python操作RabbitMq详解

    Python 操作RabbitMq详解 一、简介: RabbitMq 是实现了高级消息队列协议(AMQP)的开源消...

  • Python&Rabbitmq

    一、类库 Python操作rabbitmq的类库是pika 二、基本使用 首先粗略看下rabbitmq的基本介绍 ...

  • Python操作rabbitMQ

    RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。 rabbitMQ是一款基于AMQP协...

  • 【Python实践】_Python操作RabbitMQ

    真正的稳定,是自己不断成长,不断寻找新的空间。与其要稳定,不如开始拥抱这个变化的时代,让自己准备好。python实...

  • python 操作RabbitMq详解

    一、简介: RabbitMq是实现了高级消息队列协议(AMQP)的开源消息代理中间件。消息队列是一种应用程序对应用...

  • Python3 操作RabbitMQ

    python使用pika模块操作RabbitMQ,我们可以通过sudo pip3 install pika来安装p...

  • Python操作rabbitmq系列(一)

    从本文开始,接下来的内容,我们将讨论rabbitmq的相关功能。我的这些文章,最终是要实现一个项目(具体是什么暂不...

  • python使用RabbitMQ之pika客户端

    RabbitMQ是比较流行的MQ(Message Queue), 下面介绍下python连接RabbitMQ的客户...

  • django + celery 入门级总结

    环境: system: windows 10python: python2.7 1.RabbitMQ/Redis安...

  • RabbitMQ简明笔记

    环境说明 RabbitMQ版本:3.7.5操作系统:Mac OSX RabbitMQ的安装 https://www...

网友评论

    本文标题:Python操作rabbitMQ

    本文链接:https://www.haomeiwen.com/subject/qrzsaqtx.html