1.4. 模块化代理配置文件
如果您有多个共享通用配置设置的代理,您可以在单独的文件中定义通用配置,然后将这些文件包含在每个代理的 broker.xml
配置文件中。
您可以在代理之间共享的最常见配置设置包括:
- 地址
- 地址设置
- 安全设置
流程
为您要共享的每个
broker.xml
部分创建单独的 XML 文件。每个 XML 文件只能包含来自
broker.xml
的一个部分(例如,地址或地址设置,但不能同时设置)。顶级元素还必须定义元素命名空间(xmlns="urn:activemq:core")
。本例显示了
my-security-settings.xml
中定义的安全设置配置:my-security-settings.xml
<security-settings xmlns="urn:activemq:core"> <security-setting match="a1"> <permission type="createNonDurableQueue" roles="a1.1"/> </security-setting> <security-setting match="a2"> <permission type="deleteNonDurableQueue" roles="a2.1"/> </security-setting> </security-settings>
-
为每个应使用通用配置设置的代理打开
<broker_instance_dir> /etc/broker.xml
配置文件。 对于您打开的每个
broker.xml
文件,执行以下操作:在
broker.xml
开头的<configuration> 元素
中,验证是否出现以下行:xmlns:xi="http://www.w3.org/2001/XInclude"
为包含共享配置设置的每个 XML 文件添加 XML 包含。
此示例包含
my-security-settings.xml
文件。broker.xml
<configuration ...> <core ...> ... <xi:include href="/opt/my-broker-config/my-security-settings.xml"/> ... </core> </configuration>
如果需要,验证
broker.xml
以验证 XML 是否对架构有效。您可以使用任何 XML 验证器程序。这个示例使用
xmllint
针对artemis-server
xml。.xsl 模式验证 broker
.$ xmllint --noout --xinclude --schema /opt/redhat/amq-broker/amq-broker-7.2.0/schema/artemis-server.xsd /var/opt/amq-broker/mybroker/etc/broker.xml /var/opt/amq-broker/mybroker/etc/broker.xml validates
其它资源
- 有关 XML 包含(XInudes)的更多信息,请参阅 https://www.w3.org/TR/xinclude/。
1.4.1. 重新加载模块配置文件
当代理定期检查配置更改时(根据 configuration-file-refresh-period
指定的频率),它 不会自动 检测通过 xi:include
对在 broker.xml
配置文件中包含的配置文件进行的更改。例如,如果 broker.xml
包含 my-address-settings.xml
,并且您对 my-address-settings.xml
进行配置更改,代理不会自动检测 my-address-settings.xml 中的
更改并重新加载配置。
要 强制 重新加载 broker.xml
配置文件以及其中包含的任何修改的配置文件,您必须确保 broker.xml
配置文件的"最后修改"时间戳已更改。您可以使用标准 Linux touch
命令更新 broker.xml
最后修改的时间戳,而不进行任何其他更改。例如:
$ touch -m <broker_instance_dir>/etc/broker.xml
或者,您可以使用管理 API 来强制重新加载代理。可以使用 ActiveMQServerControl
上的管理操作 reloadConfigurationFile()(
使用 ObjectName
org.apache.activemq.artemis:broker="BROKER_NAME"
或资源 名称服务器
)重新加载配置文件。
其它资源
- 了解如何使用管理 API,请参阅在管理 AMQ Broker 中使用 Management API