• rabbitMQ 基本概念


    参考官网教程 https://www.rabbitmq.com/getstarted.html

    1 exchange

    发送方的接口:寄信邮筒  寄信方的接口。

    定义:

    channel.exchange_declare(exchange='logs',
                             exchange_type='fanout')

    使用:

    发信方把消息发到exchange就完事了: 

    channel.basic_publish(exchange='direct_logs',
                          routing_key=severity,
                          body=message)
    routing_key 类似邮编/地址/类型。用于邮局内部发送到不同的queue

    2 queue

    收信方的接口。家门口的收信箱。 通常1个queue 被1个消费者process订阅处理。

    可以不指定队列名字,此时可以得到临时名字。用于后面的binding

    result = channel.queue_declare(queue='', exclusive=True)
    queue_name = result.method.queue

    使用时:

    每个queue的订阅者,消费这个queque的消息。

    channel.basic_consume(
        queue=queue_name, on_message_callback=callback, auto_ack=True)

    这样,寄信者只需要知道exchange和提供routing_key, 收信者只定义特定1个queue,实现了发布和订阅的接偶。

    3 exchange和queue 之间的关系

    类似邮局内部架构,描述 寄信邮桶和收件信箱 建立“多 对 多”的关系

    用queue_bind描述

    一个queue可以给定exchange和routing_key,投递到exchange_name的,含有这个routing_key的消息会被“”最终投递到这个queue_name的

    channel.queue_bind(exchange=exchange_name,
                       queue=queue_name,
                       routing_key='black')

    3.1 exchange type

    描述对routing_key的处理方式不同:

    3.1.1 fanout :

    无视routing_key, 发送到exchange_name的消息,简单广播给全部bind的队列

    3.1.2 direct

    exchange直接根据routing_key把消息发到给定的queue。 又分2种情况:

    一个queue可以多次binding不同的routing_key

    而同样1个key,也可以绑定到多个key 此时 routing_key=black的消息效果和 fanout一样

    3.1.3 topic

    多维routing_key,比如同时包含严重性等级和类型的日志 both severity (info/warn/crit...) and facility (auth/cron/kern...

    形如stock.usd.nyse 用 .区分

    然后,queue用似正则表达式,进行匹配

     *  任意1两个.之间的字符

    # 0或任意字符(多个.)

    如果全都不匹配的,就被丢弃了,具体看 https://www.rabbitmq.com/tutorials/tutorial-five-python.html

  • 相关阅读:
    http强转https websocket
    apache http添加证书转成https
    insert into
    分割字符串和截取字符串:split 和substring
    java实现http请求
    Oracle 中 decode 函数用法
    LeetCode:154. 寻找旋转排序数组中的最小值 II
    LeetCode:153. 寻找旋转排序数组中的最小值
    LeetCode:151. 翻转字符串里的单词
    LeetCode:145. 二叉树的后序遍历
  • 原文地址:https://www.cnblogs.com/xuanmanstein/p/15970277.html
Copyright © 2020-2023  润新知