在学习Nova部分源码时遇到一个问题,在创建一个instance时,会想queue中发送一个rpc.cast消息,因为cast发送是单向的,我不明白的是,当我运行一个instance时,调度器和相应的API之间是如何调用的呢?并且调用API又如何找到nova.computer.manager中的run_instance方法的呢?希望大神们指点一下,谢谢!openstackinstance源码nova

解决方案 »

  1.   

    纠结了我好几天的问题,终于找到为什么了,还是对Schedule调度还rabbitMQ的理解不是很深。
    其实原因很简单,就是在/bin/nova-schedule开启了一个服务server(这个sever其实就是),这个服务其实就是在不停的监听消息队里中是否有关于他的topic请求,而在配置文件中定义了一个topic='scheduler_topic,当rpc.cast发送一个topic为scheduler_topic的请求时,调度器会找到对应的方法,也就是nova.schedule.manager里的run_instance的方法!这样一个消息的发送与接收就完成了。