2017-10-28 155 views
0

我正在學習RabbitMQ。我不明白爲什麼在receive_logs.pyexample我們設定的交換類型:爲什麼我們應該在接收者中聲明隊列的名字?

channel.exchange_declare(exchange='logs', 
         exchange_type='fanout') 

以及與此交流結合隊列的名稱:

channel.queue_bind(exchange='logs', 
        queue=queue_name) 

發送者與exchange類型已經創建交換。爲什麼我們需要重新設置類型? 爲什麼我們需要做queue_bind如果交易種類fanout?這意味着它中的每個隊列都會得到消息,但是在這裏我們指定了名稱。

回答

1

因爲fanout每個隊列都會將路由消息交換到,所以它們綁定到

您沒有綁定交換到生產者中的隊列。而這種約束必須在某個地方宣佈 - 在這種情況下,它是在消費者一方完成的。

它不是「將消息路由到代理中的每個隊列」:)你也需要綁定它。

+0

爲什麼我們需要將它設置爲發送者和接收者? –

+0

@ user1432751參見中間段落 –

+0

所以我應該在接收器端寫入:'chan.basic_consume(...)'。如果我已經將所有發件人綁定了。 –

相關問題