zoukankan      html  css  js  c++  java
  • 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()
    

    四.其他类型的消息队列

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

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

  • 相关阅读:
    算法:字符串处理
    写点什么好呢3?昨日的宝贝成了今日的负担!
    商业研究(22):股权投资,大有可为?
    商业研究(22):股权投资,大有可为?
    .Net Task常见问题
    使用OKHttp模拟登陆知乎,兼谈OKHttp中Cookie的使用!
    Android开发——Android 6.0权限管理机制详解
    创业有套路
    创业有套路
    半分钟内能看透问题本质的人是如何思考的?
  • 原文地址:https://www.cnblogs.com/pythonywy/p/11850789.html
Copyright © 2011-2022 走看看