当前位置:
首页 > temp > 简明python教程 >
-
RabbitMQ消息队列
RabbitMQ消息队列
一.MQ介绍
全称为Message Queue
, 消息队列(MQ
)是一种应用程序对应用程序的通信方法。MQ
是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取队列中的消息。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。
你可以想想在生活中的一种场景:当你把信件的投进邮筒,邮递员肯定最终会将信件送给收件人。我们可以把MQ比作 邮局和邮递员。
MQ和邮局的主要区别是,它不处理消息,但是,它会接受数据、存储消息数据、转发消息
- 储存消息、数据
- 保证消息的顺序
- 保证数据的正确交付
二.RabbitMQ的构成
- Publisher(生产者)
一个向交换器发布消息的客户端应用程序。
- Exchange(交换器)
用来接收生产者发送的消息并将这些消息路由给服务器中的队列。
- Queue(消息队列)
存储消息的一个队列
- Channel(信道)
多路复用连接中的一条独立的双向数据流通道
- Consumer(消费者)
表示一个从消息队列中取得消息的客户端应用程序
三.RabbitMQ的使用
官方文档: https://www.rabbitmq.com/install-standalone-mac.html
下载RabbitMQ
1.安装模块
pip3 install pika
or
easy_install pika
or
源码
pip3 install https://pypi.python.org/pypi/pika
二.生产者
import pika
# 向哪个地址进行连接
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# 我们连接到本地计算机上的代理,即 localhost。如果我们想连接到另一台计算机上的代理,则只需在此处指定其名称或IP地址。
# 在发送之前,我们需要确保收件人队列存在。如果我们将消息发送到不存在的位置,RabbitMQ只会删除该消息
# 建一个将消息传递到的问候队列
channel.queue_declare(queue = 'hello')
# 队列名称需要在routing_key参数中指定
channel.basic_publish(exchange = '',
routing_key = 'hello',
body = 'Hello World!')
print('已发送')
# 关闭
connection.close()
三.消费者
import pika
# 连接
connection = pika.BlockingConnection(pika.ConnectionParameters(host="localhost"))
channel = connection.channel()
# 接收人
channel.queue_declare(queue = 'hello')
# 定义回调函数
def callback(ch, method, properties, body): # ch,方法,属性,消息
print("consume done", ch, method, properties, body)
channel.basic_consume(on_message_callback=callback, queue="hello", auto_ack=True)
# 我们进入一个永无止境的循环,该循环等待数据并在必要时运行回调。
channel.start_consuming()
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数