2012-08-16 78 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之前,這是絕對重要的信息!

乾杯!