2015-04-01 112 views
0

在我在網上找到的所有示例中,我看到交換和隊列在消息消耗之前被聲明。 宣佈交換似乎很奇怪,因爲,爲什麼我會這樣做?我正在使用一個隊列,它可能會綁定到多個交換器(或者沒有,也可能只是有舊的消息在等待)。要使用rabbitmq隊列,我是否真的需要聲明交換和隊列?

另外,我想不出爲什麼我會聲明一個隊列。這將要求我知道關於隊列的信息,我不需要知道它們的使用情況(如auto_delete和durability)。

當我在本地測試它時,我可以在不聲明任何內容的情況下使用隊列。有用。所以我還想知道,爲什麼我在網上看到的每個例子都宣稱交換和排隊,即使它只是消耗它?

謝謝!!!

回答

0

「所有」您看到的示例是自包含的。他們試圖給你一個工作的例子。因爲如果您沒有設置所有組件,您的示例將失敗。

根據「爲什麼我要申報隊列」。現實生活中的例子是當你的消費者想要消費與當前配置相關的消息時。在這種情況下,它將創建一個排他性(沒有其他人可以連接到這個隊列),並開始消費信息。

回到你的答案。不,你不需要這樣做。您可以提前預先創建交換,綁定和隊列,然後將名稱傳遞給代碼。

0

通常,您不需要在消費者中聲明交換和隊列。您必須在其他地方組裝「交換/隊列」拓撲。這就像數據庫中的模式一樣。

但總是有例外。 當您需要用於實時處理的「專用」隊列(exclusive = true)時,消費者必須知道(通過配置)關於源交換並將自己的隊列綁定到它。

在其他情況下,我可以想象發佈商聲明交換和消費者可以使用某種約定(模式)進行交換命名的情況。