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 配置管理员机制进行配置,可以在 Karaf 中轻松管理。可以通过修改 ${KARAF_BASE}/etc/org.apache.activemq.server-default.cfg
文件或相应的配置管理员属性来进行配置。该文件示例如下所示:
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 控制台默认安装,可以通过 https://127.0.0.1:8181/activemqweb/ 访问。
控制台的配置与代理本身类似。配置位于 ${KARAF_BASE}/etc/org.apache.activemq.webconsole.cfg
中,默认如下所示:
webconsole.jms.url=tcp://127.0.0.1:61616
webconsole.jmx.url=service:jmx:rmi:///jndi/rmi://127.0.0.1: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
命令浏览或清除队列。