Exchange与Queue
对于AMQP协议来说,Exchange(网关)和Queue(队列)是其进行消息传递的基本元件。
Exchange在Kombu中通过kombu.Exchange
类来创建。创建时常用以下参数来定制Exchange。
name
,Exchange的名称。type
,Exchange的类型,可选direct
、topic
、fanout
和headers
。channel
,Exchange绑定到的通道,可以通过Connection类的.channel()
方法获取。durable
,指示当消息队列重启后这个Exchange是否还继续存在,布尔型值。auto_delete
,指示当所有依赖这个Exchange的Queue都删除后是否自动删除Exchange,布尔型值,默认为Flase
。delivery_mode
,消息传递模式,字符串型,可取transient
(即时)或者persistent
(持久化)。
Exchange类实例在创建后,需要调用.declare()
方法来在消息队列中创建Exchange。Exchange在不再需要时可以使用.delete()
方法删除。Exchange类实例还可以通过使用.bind_to(exchange='', routing_key='')
来绑定到另一个Exchange来完成消息中转。
Queue则是需要绑定到Exchange才能够接收到消息的。Queue在Kombu中可以通过kombu.Queue
类来创建。创建时常用以下参数来定制Queue。
name
,Queue的名称。exchange
,需要绑定到的Exchange名称或者Exchange类实例。routing_key
,绑定键,可参考前面Pika一章中的叙述。channel
,绑定到的Channel。durable
,指示在消息队列重启之后Queue是否还继续存在。exclusive
,指示Queue中的消息是否只能被当前连接消费。auto_delete
,指示当没有消费者连接到这条Queue时是否自动删除Queue。expires
,指示Queue从空闲到自动删除的等待时间。message_ttl
,消息的存活时间。max_length
,Queue持有消息的最大数量。max_priority
,Queue的最大优先级。on_declared
,当Queue完成创建后的回调。
如果Queue在创建的时候没有指定Exchange,那么可以使用.bind_to(exchange='', routing_key='')
来绑定到Exchange。