前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RabbitMQ消息队列

RabbitMQ消息队列

作者头像
小小咸鱼YwY
发布2020-06-19 15:35:43
1.6K0
发布2020-06-19 15:35:43
举报
文章被收录于专栏:python-爬虫python-爬虫

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.安装模块

代码语言:javascript
复制
pip3 install pika
or
easy_install pika
or
源码
pip3 install https://pypi.python.org/pypi/pika

二.生产者

代码语言:javascript
复制
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()

三.消费者

代码语言:javascript
复制
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()

四.其他类型的消息队列

https://www.rabbitmq.com/getstarted.html

直接参考官方文档即可写的非常详细

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.MQ介绍
  • 二.RabbitMQ的构成
  • 三.RabbitMQ的使用
    • 1.安装模块
      • 二.生产者
        • 三.消费者
        • 四.其他类型的消息队列
        相关产品与服务
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档