kombu消息框架(一)
kombu是一个python的消息库。
Kombu的目标是通过为AMQP协议提供一个地道的高层次接口,来使python中的消息编程更为简单。同时也为通用的消息问题提供试验和测试的解决方案。
术语:
-
生产者
生产者发送消息到交换器。
-
交换器
消息被发送到交换器. 交换器是有名称的,而且可以被配置使用多个路由算法。交换器通过匹配消息中的路由键值来将消息路由给消费者。消费者绑定到交换器时需要提供关心的路由键值。
-
消费者
消费者声明一个队列,将它绑定到交换器并从中接收消息。
-
队列
队列接收发送到交换器的消息。队列是被消费者声明的。
-
路由键
每个消息都有一个路由键。对路由键的解释依懒于交换器的类型。标准AMQP默认有4种交换器类型, 不同的实现可以自定义类型 (需要查看相应手册获取相关信息).
下面是 AMQP/0.8的定义的默认交换器类型:
-
Direct 交换器
如果一个消息的路由键属性和消费者的路由键值一致则匹配。
-
Fan-out交换器
总是匹配, 尽管绑定不有一个路由键值。
-
Topic 交换器
通过一个原生的类型匹配模式来匹配消息的路由键。消息的路由键值由多个"."分隔的单词组成。(”.”,就像域名一样), 有2个特殊的符号可以使用; 星号 (“*”)和 (“#”). "*"匹配任何单词 ,"#"匹配0个或多个单词. 比如“*.stock.#” 匹配“usd.stock” 和“eur.stock.db” ,但是不匹配“stock.nasdaq”.
-
举个例子:
下面我们以一个Hello World程序作为本篇博客的结尾,看看Kombu是怎么帮助我们实现消息通信的。一些细节看不懂没关系,在后续我们会对里面的每个对象进行深入的学习。
首先是消息发送端hello_publisher.py:
from kombu import Connection import datetime # "amqp://guest:guest@localhost:5672//"中的amqp就是上文所提到的transport, # 后面的部分是连接具体transport所需的参数,具体含义下篇博客中会讲到 with Connection('amqp://guest:guest@localhost:5672//') as conn: simple_queue = conn.SimpleQueue('simple_queue') message = 'helloword, sent at %s' % datetime.datetime.today() simple_queue.put(message) print('Sent: %s' % message) simple_queue.close()
然后是消息接收端hello_consumer.py:
from kombu import Connection with Connection('amqp://guest:guest@localhost:5672//') as conn: simple_queue = conn.SimpleQueue('simple_queue') message = simple_queue.get(block=True, timeout=1) print("Received: %s" % message.payload) message.ack()
参考链接:
https://blog.csdn.net/weixin_37947156/article/details/76372427

浙公网安备 33010602011771号