2015-04-12 67 views
2

我正在研究一個應用程序,其中我有一個監聽器在一個rabbit mq隊列中。根據消息的類型,聽衆繼續並執行任務。我的問題是我需要一種方法來產生一個新的監聽器,如果一個監聽器不能應付隊列。據我所知,我可以使用rabbitmq json api來查找隊列的len,並根據這些信息採取行動。因此,我編寫了一個腳本,它使用curl來檢查隊列長度並生成一個新的偵聽器進程。我在這條正確的道路上嗎?有沒有更好的方法來實現這一目標?我正在尋找一種解決方案,它可以隨着負載的增加而達到一定的極限。Auto spawn rabbit mq listener

回答

1

檢查RabbitMQ API以查看隊列的長度是一種方式,它肯定會起作用。

您應該嘗試預測何時加載負載,以便您可以根據需要慢慢增加消費者的數量,以便您不會看到實例產生的突然激增。同時產生多個實例可能會對您的系統造成不必要的負載。

+0

對於我們的系統,我一直在努力定義「負載」。隊列長度是我能想出的唯一東西,所以我正在考慮檢查實例數量並可能關閉未使用的實例的方法,並且現在就使用它。感謝您的回答。 – darkstar

+0

如果你使用RabbitMQ API,你也可以在''message_stats'''下面看到類似''rate''的東西。作爲一個例子,你可以檢查並看看傳入速率是否很高。如果它高於每秒5條消息,而您只能使用4條消息,那麼即使在隊列變高之前,您也需要更多消費者。 – eandersson

+0

您還可以比較消費者每秒得到確認的消息數量,而不是發送給RabbitMQ的消息數量。 – eandersson