2014-03-28 34 views
0

我正在使用python的rabbitmq權限。該應用程序有多個客戶端和一個服務提供者。我想限制客戶端到特定的隊列,而服務提供者應該能夠讀取所有隊列而不寫入任何隊列。我嘗試設置權限如下:Rabbitmq權限

對於服務提供商的帳戶,我設置了以下

rabbitmqctl set_permissions -p vhost service_provider ".*-client-queues" "" ".*-client-queues" 

對於客戶我做

rabbitmqctl set_permissions -p vhost client1 "client1-client-queues" "client1-client-queues" "" 

而且郵件永遠不會傳遞給服務提供商。但是,如果我設置

rabbitmqctl set_permissions -p vhost client1 ".*" ".*" ".*" 

它的工作原理。但我需要限制客戶端到特定的隊列。 你們有沒有人試圖實現這樣的事情?任何提示將不勝感激。謝謝。

回答

0

我缺少什麼是交換名字,而我設置的權限。我已經解決了我的問題有以下權限:(我使用的是默認的Exchange)

對於客戶:

rabbitmqctl set_permissions -p vhost client1 "client1-client-queues|amq\.default" "client1-client-queues|amq\.default" "amq\.default" 

對於服務提供商:

set_permissions -p vhost service_provider ".*-client-queues|amq\.default" "amq\.default" ".*-client-queues|amq\.default" 
2

service_providerclient1必須是用戶,相應的部件使用,而不是默認(guest)連接到所述的RabbitMQ代理。

您需要創建用戶並與rabbitmqctl add_user ...設置自己的密碼,然後讓各個組件中使用它們。

另請注意,用於發佈消息的交換必須與您指定的寫入權限相匹配。詳情請參閱here

我建議你一個接一個添加的權限,所以你看快你在做什麼錯。

+0

感謝您的回答。用戶和隊列已經創建好了,我正在使用默認交換。我缺少的是設置權限時的交換名稱。一旦我在設置權限時添加默認交換,它就會按照我想要的方式工作。這不是我正在尋找的答案,但你確實幫助我找出答案。再次感謝! – kyiphyu