1 rabbitmq消息处理过程
生产者将信息发送到交换机,交换机根据绑定键将信息发送到队列,消费者从队列中获取数据。
交换机知道信息到达时应该如何处理它。
如何处理就是根据交换机的类型确定的。
2 交换机以及绑定
交换机类型: direct, topic, headers, fanout
关于交换机和队列,存在绑定关系,具体语法如下:
channel.queue_bind(exchange=exchange_name,
queue=queue_name)
表示队列对来自于某个交换机上的信息感兴趣
channel.queue_bind(exchange=exchange_name,
queue=queue_name,
routing_key='black')
绑定可以添加额外的参数: routing_extra,,为了避免与basic_publish
参数的混淆,我们称它为绑定键binding key。
这意味着绑定键依赖于交换机类型,对于fanout,忽略绑定键。
2.1 fanout交换机
如果交换机类型为: fanout:广播信息到所有队列上
消息队列模型如下:
Producer ---> Exchange(type=fanout) ---> amq.gen-RQ6... ---> Consumer1
---> amq.gen-RQ6... ---> Consumer2
2.2 direct交换机
交换机类型如果为: direct.那么绑定键会正确匹配消息的路由键。
消