在 openstack nova 中,不同类型的 rabbitmq 消费者((例如 topic 消费者、node_topic 消费者、fanout 消费者)与每个 nova 服务(例如 nova-schedule、nova-compute 等)相关联。以下几行摘自https:/ /github.com/openstack/nova/blob/master/nova/service.py为每个 nova 服务使用 3 个消费者。仅供参考:service.py 是用于生成 nova-services 的包装器。
self.conn.create_consumer(self.topic, rpc_dispatcher, fanout=False)
node_topic = '%s.%s' % (self.topic, self.host)
self.conn.create_consumer(node_topic, rpc_dispatcher, fanout=False)
self.conn.create_consumer(self.topic, rpc_dispatcher, fanout=True)
我猜,每个消费者都与不同的兔子队列相关联。我认为,我们可能需要一个 node_topic 消费者来直接向节点发送消息。每个服务中另外两个消费者(主题和扇出消费者)的目的可能是什么?
此外,当我使用以下命令在我的 devstack 节点中列出 rabbitmq 的交换时,它会显示大量 (11685) 消息
stack@9734efd5-6fcd-4127-92b4-6715a66fda9d:/opt/stack$ sudo rabbitmqctl list_exchanges | wc -l
11685
有人能解释一下为什么openstack devstack实现的rabbitmq中有这么多交流吗?