OSGi 整合
簡介
本文將詳細介紹如何在 Apache Karaf 這個基於 OSGi 的小型執行環境中使用 ActiveMQ Classic。Apache Karaf 以前稱為 ServiceMix kernel,因此這裡找到的資訊也適用於 Apache ServiceMix 企業服務匯流排。
本文描述的步驟已使用 Apache Karaf 2.3.0 進行測試。
安裝
ActiveMQ Classic 提供了 Karaf 功能,可協助您在 OSGi 環境中整合和使用訊息中介軟體。首先,您需要將功能 URL 新增至 Karaf。對於 5.9.0 版本,您可以這樣做:
karaf@root> features:chooseurl activemq 5.9.0
之後,您應該會看到新加入的功能。
karaf@root> features:list
State Version Name Repository
\[uninstalled\] \[5.9.0 \] activemq-broker activemq-5.9.0
\[uninstalled\] \[5.9.0 \] activemq-http activemq-5.9.0
\[uninstalled\] \[5.9.0 \] activemq-camel activemq-5.9.0
\[uninstalled\] \[5.9.0 \] activemq-web-console activemq-5.9.0
安裝和執行訊息中介軟體就像安裝 activemq-broker
功能一樣簡單,例如:
karaf@root> features:install activemq-broker
這將安裝並啟動完整的訊息中介軟體(包括 Web 控制台),就像您啟動獨立版本一樣。
訊息中介軟體設定
訊息中介軟體是使用 OSGi Config Admin 機制設定的,並且可以在 Karaf 中輕鬆管理。可以透過修改 ${KARAF_BASE}/etc/org.apache.activemq.server-default.cfg
檔案或相應的 config admin 屬性來完成設定。該檔案的範例如下:
broker-name=amq-broker
data=${karaf.data}/${broker-name}
config=${karaf.base}/etc/activemq.xml
下表列出了必要屬性:
屬性名稱 | 屬性描述 |
---|---|
broker-name | 訊息中介軟體的名稱 |
config | XML 設定檔案的位置 |
您也可以使用此檔案來設定其他屬性,這些屬性將取代 XML 設定檔案中的佔位符,例如此範例中使用的 ${data
} 屬性。
預設 XML 設定檔案位於 ${KARAF_BASE}/etc/activemq.xml
中。
Web 控制台
Web 控制台預設安裝,可透過 http://localhost:8181/activemqweb/ 存取。
控制台的設定方式與訊息中介軟體類似。設定位於 ${KARAF_BASE}/etc/org.apache.activemq.webconsole.cfg
中,預設如下所示:
webconsole.jms.url=tcp://localhost:61616
webconsole.jmx.url=service:jmx:rmi:///jndi/rmi://localhost:1099/karaf-root
webconsole.jmx.user=karaf
webconsole.jmx.password=karaf
選用:為了將 ActiveMQ Classic 控制台與設定驗證的訊息中介軟體搭配使用,也必須設定 JMS 連線的使用者名稱/密碼。
webconsole.jms.user=system
webconsole.jms.password=manager
命令
完成這些簡單步驟後,您容器中已安裝所有必要的程式庫。此外,您現在可以使用特定的命令來管理您的訊息中介軟體。
browse Display selected messages in a specified destination
bstat Displays useful broker statistics
list Lists all available brokers in the specified JMX context
purge Delete selected destination's messages that matches the message selector
query Display selected broker component's attributes and statistics
dstat Performs a predefined query that displays useful tabular statistics regarding the specified destination type
命令說明
若要取得特定命令的詳細說明,您可以執行:
activemq:[command] --help
查詢訊息中介軟體
有幾個命令可用於查詢訊息中介軟體。若要尋址本機訊息中介軟體,您需要使用 --jmxlocal
參數。
以下命令會顯示可用的訊息中介軟體:
karaf@root> activemq:list --jmxlocal
BrokerName = mybroker
若要取得更詳細的資訊,請執行:
karaf@root> activemq:query --jmxlocal
這將顯示有關連線器、佇列列表等的資訊...
您也可以使用 activemq:browse
和 activemq:purge
命令來瀏覽或清除佇列。