2013-10-03 36 views
0

我在一個新項目中採用了RabbitMQ。我需要一個集羣環境來支持系統故障和高需求。解決問題:每當客戶端連接時,必須將隊列創建爲獨佔。如果客戶端斷開連接,我希望刪除隊列,釋放其資源。此外,隊列綁定到主題必須受到每個憑據權限的限制。我想約束連接來創建唯一的隊列(當連接關閉時會自動刪除),並且只將這樣的隊列綁定到我允許的主題列表,每個用戶帳戶都可以配置。RabbitMQ每個連接隊列的創建和刪除

我無法將隊列創建限制爲排他性,也不能限制客戶可以訂閱的主題。我可以基於VHOSTS強加這個約束,但這需要動態創建VHOSTS,可能需要數百個。

RabbitMQ可能嗎?有沒有更好的方法呢? 謝謝

回答

1

如果您只希望客戶端能夠創建獨佔隊列,您可能需要編寫自己的包裝器並將RabbitMQ從客戶端完全抽象出來。讓你的客戶通過這個包裝與RabbitMQ交談,並在這裏處理隊列創建和綁定。

這會暴露您自己的queue_declare版本,然後調用RabbitMQ queue_declare方法設置exlusive = true。

+0

蹩腳的解決方法,因爲它需要太多的工作來支持多種語言,但由於rabbitmq acl系統的限制,這是唯一的方法。我可能會預先創建每個隊列並將其自己綁定,允許每個用戶只能從自己的隊列中讀取。 – tiagoboldt

相關問題