2013-07-23 53 views
1

我是Active MQ的新手。我想知道以下是可能的Active MQ(或Apollo)。ActiveMQ主題和安全性(或Apollo)

本質上,我有一個過程,將生成消息來啓用或禁用特定的網站。當消息(啓用/禁用)發送給ActiveMQ時,根據消息的路由鍵,該消息可能會有多個消費者。例如,如果消息要啓用站點A,則路由密鑰將爲site.A.enable。而站點A正在監視他們的站點A隊列將獲得此消息以及監視所有啓用/禁用消息的系統範圍處理器。

現在,我認爲這是可行的Active MQ使用主題。 SiteA將訂閱site.A.*的所有主題,系統過程將訂閱site.*.enablesite.*.disable的所有主題。 這是在ActiveMQ中做到這一點的最佳方式嗎?

我也想確保siteA不能訂閱site.B.*site.C.*主題。他們只能接收來自site.A.*的消息。系統進程可以訪問所有site.*.*主題。我也認爲這可以通過安全插頭完成。我只需更新配置文件併爲每個網站主題指定讀取/寫入/管理訪問權限,並將其連接到用戶/密碼或ldap,以識別哪些網站正在連接。 這是正確的嗎?如果這些網站是外部網站,這會起作用嗎

我希望能夠用最少的配置/設置添加新的站點。當siteX聯機時,發佈者代碼將只發布消息,就像所有其他發佈者代碼一樣,除了它將發佈到主題爲site.X.*的主題上時,它將在發佈第一條消息時動態創建。消費者也可以動態地從site.X開始消費。

這是我的問題所在。 如何添加網站X只能訪問site.X主題「動態」的安全性?我想我將不得不編輯配置文件併爲新網站添加安全性內容。然後我將不得不停止/啓動服務器來提取新設置。我可能能夠在服務器上編輯配置,但我不認爲每次添加新站點時都可以停止/啓動。

有沒有更好的方法來實現這個目標?

謝謝!

回答

1

你所概述的是非常明智的。您需要爲每個站點創建一個新的ActiveMQ用戶,並使用授權插件爲他們提供site.<whatever>上的讀寫和管理權限。如果您使用的是簡單的安全性插件,其中身份驗證和授權詳細信息位於您的activemq.xml中,則每次添加站點後都需要重新啓動ActiveMQ。

如果您想自動執行此操作(不能動態地執行此操作),那麼您需要使用LDAP版本的身份驗證和授權插件,並有一個腳本將相應的憑據和權限寫入LDAP當一個網站被安裝。我猜你可能已經需要某種腳本化的步驟來將憑據添加到網站中,所以這應該不是什麼大問題。我很確定ActiveMQ應該在沒有重新啓動的情況下完成更改,但我沒有自己嘗試過,因此您需要對此進行測試。

+0

謝謝。 LDAP工作。我花了幾天的時間纔將它們一起工作(你需要jaasAuthenticationPlugin和cachedLDAPAuthorizationMap,這在規範中不太清楚)。 – Dan

+0

太棒了,感謝您的反饋!不知道cachedLDAPAuthorizationMap。 –

+0

@丹,我知道它已經有一段時間了,但是你會介意發佈你的apollo.xml和login.config嗎?我試圖做一些非常類似於你的事情,並且遇到了設置問題。謝謝 – scphantm