探索
探索代理程式
ActiveMQ Classic 使用稱為 探索代理程式 的抽象概念,來偵測遠端服務,例如遠端訊息代理伺服器。我們可以利用探索功能,讓 JMS 用戶端自動偵測要連線的訊息代理伺服器,或是提供訊息代理伺服器網路
目前有兩種探索代理程式。
多點傳播
探索傳輸使用我們自己的多點傳播式探索代理程式來尋找要連線的 URI 清單。
如需更多資訊,請參閱探索傳輸參考。
Zeroconf
ZeroConf 是一種標準探索規格,使用 UDP / 多點傳播來探索裝置。它被 Apple 的 Rendezvous 服務所使用。
我們使用 jmDNS 專案來實作 Zeroconf 規格以偵測服務。這表示其他基於 Zeroconf 的
工具可以與此探索代理程式一起使用。
若要在訊息代理伺服器中設定探索,您應該使用 XML 設定。以下是使用探索來建立訊息代理伺服器網路的範例。
如果您有一個或多個已啟用 Zeroconf 探索的訊息代理伺服器正在執行,您可以使用 brokerURL 連線到訊息代理伺服器
zeroconf:_activemq_development.
這將使用 Zeroconf 尋找可用的訊息代理伺服器,並隨機選擇一個,如果有多個訊息代理伺服器正在執行,則會在斷線時自動故障轉移。
LDAP 探索
ActiveMQ Classic 支援使用 LDAP 來探索訊息代理伺服器。
如需更多詳細資訊,請參閱LDAP 訊息代理伺服器探索機制。
試用探索
如果您在不同的 shell 中執行下列命令,您將會有 2 個自動探索彼此的訊息代理伺服器和 2 個使用固定 URL 的用戶端
maven -o server -Dconfig=src/test/org/activemq/usecases/receiver-zeroconf.xml
maven -o server -Dconfig=src/test/org/activemq/usecases/sender-zeroconf.xml
maven -o consumer -Durl=tcp://127.0.0.1:62002
maven -o producer -Durl=tcp://127.0.0.1:62001
如果您希望用戶端使用探索來尋找訊息代理伺服器,請執行上述兩個 'server' 陳述式中的其中一個 (或兩個),然後如下執行 producer/consumer
maven -o consumer -Durl=zeroconf:_activemq.broker.development.
maven -o producer -Durl=zeroconf:_activemq.broker.development.
傳輸 URL 的格式為
zeroconf:<serviceName>
其中 <serviceName>
是 Zeroconf 服務名稱;它似乎以底線 (_) 開頭,且必須以句點 (.) 結尾。因此,我們可以利用此服務名稱來區分開發、UAT 和生產訊息代理伺服器,或將它們分組到網域等。
探索與安全性
當使用訊息代理伺服器的自動探索時,攻擊者可能會將自己偽裝成合法的訊息代理伺服器,並以此方式攔截和/或操縱所有透過它傳送的訊息。
在自動探索中是否有安全性設定可以避免這種情況?