2012-08-16 64 views
21

我一直在试图找出使用pika时应该使用哪种形式的连接,据我所知,我有两种选择。哪种形式的连接使用pika

无论是BlockingConnectionSelectConnection,但是我真的不知道有关之间的差异这两个(即什么是BlockingConnection阻止?多)

pika文档说SelectConnection是首选方式连接到兔子,因为它提供了“多种事件通知方法,包括select,epoll,kqueue和poll”。

所以我想知道这两种不同类型的连接有什么影响? PS:我知道我不应该在标题中加上标签,但在这种情况下,我认为这有助于澄清问题。

回答

11

如果您的应用程序体系结构可以从异步设计中受益,则SelectConnection非常有用。在RabbitMQ IO完成时做其他事情(例如切换到其他IO等)。这种类型的连接使用回调来指示函数何时返回。例如,您可以为

on_connected,on_channel_open声明回调,on_exchange_declared,on_queue_declared等

...当这些事件被触发执行操作。

如果您的RabbitMQ服务器(或与该服务器的连接)速度缓慢或超载,则其好处尤其明显。

手上的BlockingConnection就是这样 - 它会阻塞,直到被调用函数返回。所以它会阻塞执行线程,直到连接或channel_open或exchange_declared或queue_declared返回为例。也就是说,编程这种串行化逻辑通常比异步SelectConnection逻辑更简单。对于具有响应式RabbitMQ服务器的简单应用程序,这些也可以正常工作。

我想你已经阅读了Pika文档已经http://pika.github.com/connecting.html,如果没有,那么在你使用Pika之前,这是绝对重要的信息!

干杯!