OpenStack使用RabbitMQ作为消息传递系统。为此有多个交换和队列。我发现用于消息传输的名为“ topic”类型的名为“ nova”的交换。Exchange使用路由键将邮件路由到队列(http://www.rabbitmq.com/tutorials/amqp-concepts.html)。 (位于http://www.rabbitmq.com/img/tutorials/intro/hello-world-example-routing.png的有用图片-信誉不足,无法在此处发布) OpenStack中有多个队列,例如计算,证书,网络等。他们使用具有相同名称的路由密钥。因此,我使用这些路由键创建了几个新队列,以将它们与处理消息的使用者绑定在一起。例如,存在一个名为“计算”的队列,该队列使用名为“计算”的路由键。我创建了使用相同路由键的新队列“ my_compute”。正如我认为的那样,我会收到消息。
我有一些连接交流的代码,创建了队列和使用者。
def connect(params):
connection = kombu.Connection(hostname=params['host'])
exchange = kombu.entity.Exchange(name=params['exchange_name'],
type=params['exchange_type'],
durable=params['exchange_durable'],
auto_delete=params['exchange_auto_delete'],
internal=params['exchange_internal'])
queue_list = []
for queue in params['queues_params']:
queue_list.append(kombu.messaging.Queue(name=queue['name'],
exchange=exchange,
routing_key=queue['routing_key'],
channel=connection.channel(),
durable=queue['durable'],
auto_delete=queue['auto_delete']))
consumer = kombu.messaging.Consumer(channel=connection.channel(),
queues=queue_list,
no_ack=True,
callbacks=[self._process_message])
consumer.consume()
return connection
工作正常 但是我只收到网络队列的消息。我不知道还有其他消息,但看起来好像还有。我对吗?还是出了什么问题?还有其他消息,我该如何获取?
人到中年有点甜
紫衣仙女
相关分类