本节是快速查找配置的索引。点击元素名称即可跳转到特定章节。
1. 代理配置
1.1. broker.xml
这是包含 core
元素的主要核心服务器配置文件。core
元素包含主要服务器配置。
1.1.1. 模块化 broker.xml
broker.xml
中提供了 XML XInclude 支持,以便您可以将配置分解到单独的文件中。
为此,请确保在根配置元素中定义以下内容。
xmlns:xi="http://www.w3.org/2001/XInclude"
您现在可以在需要从另一个文件引入 xml 配置的地方定义 include 标签。
<xi:include href="my-address-settings.xml"/>
您应该确保分离文件中的 xml 元素命名空间正确,例如,如果 address-settings 元素被分离,则应该定义元素命名空间。
<address-settings xmlns="urn:activemq:core">
测试套件中可以看到此功能的示例。
./artemis-server/src/test/resources/ConfigurationTest-xinclude-config.xml
如果您使用 xmllint 根据模式验证 XML,则在运行时应启用 xinclude 标志。 |
--xinclude
有关 XInclude 的更多信息,请参见:https://www.w3.org/TR/xinclude/
要禁用 XML 外部实体处理,请使用系统属性 artemis.disableXxe
,例如:
-Dartemis.disableXxe=true
重新加载模块化配置文件
broker.xml
中的某些更改可以在运行时被拾取,如配置重新加载章节所述。直接对通过 xi:include
包含在 broker.xml
中的文件所做的更改不会自动重新加载。例如,如果 broker.xml
包含 my-address-settings.xml
,并且 my-address-settings.xml
被修改,则这些更改不会自动重新加载。要强制在这种情况下重新加载,主要有两种选择。
-
对
ActiveMQServerControl
使用reloadConfiguration
管理操作。 -
使用类似于 touch 命令更新
broker.xml
上的时间戳。代理下次检查broker.xml
以进行自动重新加载时,它将看到更新的时间戳,并触发broker.xml
及其所有包含文件重新加载。
1.2. 系统属性
可以使用系统属性替换某些配置属性。如果定义以 "brokerconfig." 开头的系统属性,它将传递给 Bean Utils,并且配置将被替换。
要使用系统属性定义 global-max-size=1000000,您需要定义此属性,例如通过 java 参数
java -Dbrokerconfig.globalMaxSize=1000000
您也可以通过 broker.xml
更改前缀,方法是设置
<system-property-prefix>yourprefix</system-property-prefix>
这有助于您在嵌入式系统上自定义 artemis。
1.3. 代理属性
代理属性扩展了属性的使用,允许在解析任何 xml 之后更新和添加代理配置。在没有 broker.xml 的情况下,可以修改硬编码的默认值。在内部,任何 xml 配置都应用于 java bean 风格的配置对象。通常,每个 xml 属性都有 setter。但是,对于属性,命名约定从 'a-b' 更改为 'aB' 以反映 camelCase java 命名约定。
集合需要一些特殊处理才能允许添加和引用。我们利用配置实体的 name 属性来查找现有条目,并在填充新实体时,将 name 设置为与请求的键匹配。通过将键值设置为 "-",支持从命名集合中删除配置。删除匹配值可以通过属性键 "remove.value" 配置。
例如,包含以下内容的属性文件
securityEnabled=false acceptorConfigurations.tcp.factoryClassName=org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptorFactory acceptorConfigurations.tcp.params.host=localhost acceptorConfigurations.tcp.params.port=61616
将:1)禁用 RBAC 安全检查 2)添加或修改名为 "tcp" 的接收器,它将使用 Netty 3)将名为 "tcp" 的接收器 'HOST' 参数设置为 localhost 4)将名为 "tcp" 的接收器 'PORT' 参数设置为 61616
配置属性是低级的,比 xml 更低级,但它非常强大;可以修改内部 org.apache.activemq.artemis.core.config.impl.ConfigurationImpl
对象的任何可访问属性。
权力越大,责任越大!
artemis run
命令脚本支持 --properties <properties file url>
,可以在其中配置属性文件。
这种配置方法的一个缺点是,任何不匹配的属性都会被忽略,没有任何提示。启用 org.apache.activemq.artemis.core.config.impl.ConfigurationImpl 的调试日志以获取更多信息。 |
在 单元测试 中有越来越多的示例,说明了可以以这种方式显式配置的内容。
2. 核心配置
这描述了 XML 配置的根。您将在这里看到列出的多个子类型。例如,在主配置上,您将有桥接,并且在 桥接列表 类型中,我们将描述该配置的属性。
下面列出的默认值是在通过编程方式或通过 |
名称 | 描述 | 默认 |
---|---|---|
远程接收器列表 |
n/a |
|
每个接收器仅由 URL 组成 |
n/a |
|
n/a |
||
n/a |
||
是否在主服务器重启时停止备份。 |
|
|
如果为 true,则对 AMQP 使用 CORE 队列命名约定。 |
|
|
如果为 False,则传递始终为异步。 |
|
|
用于绑定文件夹的文件夹 |
|
|
n/a |
||
此服务器的 HA 策略 |
none |
|
n/a |
||
n/a |
||
n/a |
||
检查配置文件更改的频率(以毫秒为单位) |
5000 |
|
主服务器用于验证拓扑中是否存在具有相同 ID 的其他节点 |
n/a |
|
n/a |
||
集群密码。它适用于所有集群配置。 |
n/a |
|
集群用户名。它适用于所有集群配置。 |
n/a |
|
如果设置,这将覆盖在不接收 ping 的情况下保持连接存活的时间(以毫秒为单位)。-1 禁用此设置。 |
-1 |
|
检查连接是否违反 ttl 的频率(以毫秒为单位)。 |
2000 |
|
连接器的 URL。这是一个列表 |
n/a |
|
true 表示服务器将在启动时创建绑定目录。 |
|
|
true 表示将创建日志目录。 |
|
|
n/a |
||
扫描磁盘以检查百分比使用情况的间隔。 |
5000 |
|
n/a |
||
所有地址被视为已满之前的字节数。 |
JVM 的 |
|
所有地址进入其配置的完整策略之前的消息数。它与 global-max-size 协同工作,无论哪个值首先达到其最大值。 |
|
|
true 表示启用了优雅关闭。 |
|
|
在服务器关闭之前等待客户端断开连接的超时时间。 |
-1 |
|
n/a |
||
重复检测循环缓存大小。 |
20000 |
|
用于在 MBeanServer 中注册 MBean 的 JMX 域。 |
|
|
是否在 JMX 属性中使用代理名称。 |
|
|
true 表示管理 API 可通过 JMX 使用。 |
|
|
日志中内部缓冲区的大小(以 KB 为单位)。 |
490KB |
|
日志缓冲区的刷新超时时间 |
ASYNCIO 为 500000;NIO 为 3333333 |
|
可以开始压缩日志之前的最小数据文件数。将其设置为 0 表示禁用压缩。 |
10 |
|
压缩日志时考虑的活动数据的百分比。 |
30 |
|
存储日志文件的目录。 |
|
|
存储节点管理器锁定文件的目录。 |
与 |
|
每个日志文件的大小(以字节为单位)。 |
10MB |
|
在日志上获取文件锁的等待时间(以毫秒为单位)。 |
-1 |
|
任何时候都可以处于 ASYNCIO 队列中的最大写入请求数。 |
ASYNCIO 为 4096;NIO 为 1;MAPPED 忽略 |
|
打开新日志文件时等待的时间长度(以秒为单位),超过该时间将超时并失败。 |
5 |
|
预创建的日志文件数量。 |
2 |
|
日志文件池的上限,-1 表示没有限制。系统将根据需要创建尽可能多的文件,但在回收文件时,它将缩减回 |
-1 |
|
如果为 true,则在返回对客户端的响应之前,等待非事务数据同步到日志。 |
|
|
如果为 true,则在返回对客户端的响应之前,等待事务数据同步到日志。 |
|
|
要使用的日志类型。 |
|
|
保留数据的存放位置,包括保留时间( |
n/a |
|
将在日志操作上使用 msync/fsync。 |
|
|
journal-device-block-size |
存储设备使用的字节大小。这通常被翻译为 |
|
log-journal-write-rate |
是否记录有关日志写入速率的消息。 |
|
存储大型消息的目录。 |
|
|
在关闭文件之前是否同步大型消息 |
|
|
log-delegate-factory-class-name |
已弃用 用于日志委托的工厂类名称。 |
n/a |
发送管理消息到的管理地址名称。 |
|
|
消费者绑定以接收管理通知的地址名称。 |
|
|
此选项控制服务器配置中的密码是否需要屏蔽。如果设置为“true”,则密码会被屏蔽。 |
|
|
这指定了当服务器以副本身份启动时将保留多少个复制备份目录。-1 表示无限制;0 表示根本不保留副本。 |
2 |
|
我们应该从磁盘中使用的最大数据百分比。当磁盘已满时,代理将被阻塞。通过设置 |
90 |
|
磁盘上低于该值时系统会阻塞或使客户端失败的最小可用字节数。支持字节表示法,如“K”、“MB”、“GB”等。如果同时设置,将覆盖 |
|
|
以毫秒为单位的 JVM 内存采样频率(或 -1 以禁用内存采样)。 |
-1 |
|
可用内存的百分比,将触发警告日志。 |
25 |
|
true 表示消息计数器已启用。 |
|
|
保留消息计数器历史记录的天数。 |
10 |
|
消息计数器使用的采样周期(以毫秒为单位)。 |
10000 |
|
扫描过期消息的频率(以毫秒为单位)。 |
30000 |
|
已弃用 过期消息线程的优先级。 |
3 |
|
n/a |
||
扫描应删除的地址和队列的频率(以毫秒为单位)。 |
30000 |
|
name |
节点名称;如果设置,将在拓扑通知中使用。 |
n/a |
用于解码屏蔽密码的类名称(和可选的配置属性)。仅在 |
n/a |
|
分页允许的并发读取的最大数量。 |
5 |
|
以纳秒为单位的页面同步时间。 |
对于 ASYNCIO 为 3333333;对于 NIO 为 |
|
如果为 true,则将读取整个页面,否则只在获取消息时进行查找和读取。 |
|
|
存储分页消息的目录。 |
|
|
True 表示在传递之前持久化传递计数。False 表示只有在消息被取消后才会发生。 |
|
|
系统将为重新传递存储的记录的最大数量。在大多数情况下,应将其设置为“1”。 |
|
|
true 表示服务器将使用基于文件的日志进行持久化。 |
|
|
true 表示 ID 将持久化到日志中。 |
|
|
queues |
已弃用 使用地址 |
n/a |
一个 <class-name/> 元素列表,包含用于拦截传入远程数据包的类的名称 |
n/a |
|
一个 <class-name/> 元素列表,包含用于拦截传出远程数据包的类的名称 |
n/a |
|
resolveProtocols |
使用 ServiceLoader 加载协议模块。 |
|
n/a |
||
用于计划线程池的最大线程数。 |
5 |
|
true 表示安全已启用。 |
|
|
在使安全缓存失效之前等待的时间(以毫秒为单位)。 |
10000 |
|
身份验证缓存的大小 |
1000 |
|
授权缓存的大小 |
1000 |
|
system-property-prefix |
使用 Bean Utils 替换配置设置的前缀。 |
n/a |
internal-naming-prefix |
在命名实现某些行为所需的内部队列和地址时使用的前缀。 |
|
是否将已验证用户的名称添加到用户发送的消息中。 |
|
|
true 表示服务器不允许任何没有已验证用户的消息,在 JMS 中这是 |
|
|
n/a |
||
用于线程池的最大线程数。-1 表示“无限制”。 |
30 |
|
在创建后,事务从资源管理器中删除的时间(以毫秒为单位)。 |
300000 |
|
扫描超时事务的频率(以毫秒为单位)。 |
1000 |
|
true 表示服务器支持通配符路由。 |
|
|
在 InetAddress.isReachable 上使用的 NIC(网络接口控制器)。 |
n/a |
|
用于验证网络的 http URI 列表。 |
n/a |
|
在 ping 或 InetAddress.isReachable 上使用的 ping 列表。 |
n/a |
|
以毫秒为单位的频率,我们应该检查网络是否仍然连接。 |
10000 |
|
在 ping 上使用的超时时间(以毫秒为单位)。 |
1000 |
|
用于 ping IPV4 地址的命令。 |
n/a |
|
用于 ping IPV6 地址的命令。 |
n/a |
|
启用或禁用关键分析。 |
|
|
用于进行关键分析的超时时间。 |
120000 毫秒 |
|
用于检查响应时间的时间。 |
0.5 * |
|
服务器在失败时应记录、暂停还是关闭。 |
|
|
resolve-protocols |
如果为 true,则代理将使用类路径上可用的任何协议管理器,否则只有核心协议可用,除非在嵌入模式下,用户可以在其中注入他们自己的协议管理器。 |
|
n/a |
||
server-dump-interval |
记录服务器特定信息(例如内存使用情况等)的间隔。 |
-1 |
store |
服务器使用的存储类型。 |
n/a |
用于配置通配符地址匹配格式的参数。 |
n/a |
|
|
||
用于在发送到管理地址的 管理消息 上启用安全设置 RBAC 的参数。 |
false |
|
用于配置安全设置匹配地址的前缀,以控制 JMX MBean 操作 上的 RBAC,并且可以选择控制 管理消息 上的 RBAC 的参数。 |
mops(管理操作的缩写) |
|
用于查找临时队列的地址设置的命名空间 |
n/a |
|
扫描过期 MQTT 会话的频率(以毫秒为单位) |
|
|
等待持久化 MQTT 会话状态的时间(以毫秒为单位) |
|
|
一个联邦元素列表 |
n/a |
|
一个连接路由器元素列表 |
n/a |
|
mirror-ack-manager-queue-attempts |
镜像目标在队列上重试确认的次数,然后再扫描页面文件以查找消息。 |
|
mirror-ack-manager-page-attempts |
镜像目标在分页上重试确认的次数。 |
|
mirror-ack-manager-retry-delay |
将进行重试的周期(以毫秒为单位)。 |
|
mirror-page-transaction |
当目标目的地是分页时,镜像是否应该使用页面事务?当镜像上的目标队列是分页时,镜像不会为每条消息记录页面事务。默认值为 |
|
是否抑制 |
|
|
标记“字面”匹配的字符。字面匹配表示设置将仅应用于完全匹配,而与通配符无关。如果此设置不省略,则它必须是两个字符 - 开始标记和结束标记。 |
n/a |
3. address-setting 类型
名称 | 描述 | 默认 |
---|---|---|
应用于设置的过滤器 |
n/a |
|
死信地址 |
n/a |
|
是否自动创建死信地址和/或队列 |
|
|
用于自动创建的死信队列的前缀 |
|
|
用于自动创建的死信队列的后缀 |
``(空) |
|
过期消息地址 |
n/a |
|
过期时间覆盖;-1 不覆盖 |
-1 |
|
重新传递消息前等待的时间 |
0 |
|
应用于 |
1.0 |
|
用于计算对 |
0.0 |
|
|
10 * |
|
在死信地址之前重试的次数 |
10 |
|
队列在调用 |
-1 |
|
与 |
-1 |
|
页面上每个文件的大小 |
10485760 |
|
队列达到 |
|
|
保留消息计数器数据的日期 |
0 |
|
已弃用 队列是最后一个值队列;请参阅 |
|
|
如果队列上没有设置,则为 |
|
|
如果队列上没有设置,则为 |
|
|
如果队列上没有设置,则为 |
|
|
如果队列上没有设置,则为 |
|
|
|
0 |
|
|
-1 |
|
在没有消费者后重新分配值之前的超时时间 |
-1 |
|
当没有队列订阅时,将消息转发到 DLA |
|
|
消费者被视为“缓慢”之前每秒消耗的最小消息数 |
-1 |
|
检测到“缓慢”消费者时该怎么办 |
|
|
检查“缓慢”消费者的频率 |
5 |
|
已弃用自动创建 JMS 队列;参见 |
|
|
已弃用自动删除 JMS 队列;参见 |
|
|
已弃用自动创建 JMS 主题;参见 |
|
|
已弃用自动删除 JMS 主题;参见 |
|
|
自动创建队列 |
|
|
自动删除自动创建的队列 |
|
|
自动删除创建的队列 |
|
|
删除自动创建的队列的延迟 |
0 |
|
队列必须处于或低于该消息数才能自动删除 |
0 |
|
如何处理运行时从 XML 中删除的队列 |
|
|
自动创建地址 |
|
|
自动删除自动创建的地址 |
|
|
删除自动创建的地址的延迟 |
0 |
|
如何处理运行时从 XML 中删除的地址 |
|
|
如何处理运行时从 XML 中删除的转向 |
|
|
管理资源可以浏览的消息数 |
200 |
|
为每个队列分配的中间消息缓冲区中的元素数 |
8192 |
|
|
|
|
|
-1 |
|
如果类型无法通过其他方式确定,则自动创建队列的路由类型 |
|
|
如果类型无法通过其他方式确定,则自动创建地址的路由类型 |
|
|
应用于没有显式配置 |
|
|
为匹配地址上创建的未来队列保留的消息数 |
|
|
重复检测循环缓存大小 |
从全局 |
4. bridge 类型
名称 | 描述 | 默认 |
---|---|---|
唯一名称 |
n/a |
|
此桥梁从中消费的队列的名称 |
n/a |
|
要转发到的地址。如果省略,则使用原始地址 |
n/a |
|
此桥梁是否支持故障转移 |
|
|
可选的核心过滤器表达式 |
n/a |
|
可选的转换器类名称 |
n/a |
|
消息被视为大型消息之前的限制。 |
100KB |
|
检查 TTL 违规的频率。-1 表示禁用。 |
30000 |
|
TTL 用于桥梁。这应该大于 ping 周期。 |
60000 |
|
连续重试之间的周期(以毫秒为单位)。 |
2000 |
|
应用于连续重试间隔的乘数。 |
1 |
|
重试间隔增长的限制。 |
2000 |
|
重试尝试的最大次数。 |
-1(无限制) |
|
转发重复检测标头? |
|
|
发送确认之前的数据字节数。 |
1MB |
|
桥梁上的生产者流量控制大小。 |
-1(禁用) |
|
桥梁的用户名,默认值为集群用户名。 |
n/a |
|
桥梁的密码,默认值为集群密码。 |
n/a |
|
尝试另一个节点之前的重试次数。 |
10 |
|
如何在桥接消息上设置路由类型 |
|
|
桥梁的并发性 |
1 |
5. 广播组类型
名称 | 类型 |
---|---|
唯一名称 |
|
数据报套接字绑定的本地绑定地址。 |
|
数据报套接字绑定的本地端口。 |
|
将数据广播到的组播地址。 |
|
用于广播的 UDP 端口号。 |
|
连续广播之间的周期(以毫秒为单位)。默认值为 2000。 |
|
JGroups 配置文件名称。 |
|
JGroups 通道的名称。 |
|
要广播的 |
6. 集群连接类型
名称 | 描述 | 默认 |
---|---|---|
唯一名称 |
n/a |
|
此集群连接应用到的地址的名称 |
n/a |
|
要使用的连接器引用的名称。 |
n/a |
|
用于检查集群连接是否未能从另一台服务器接收 ping 的周期(以毫秒为单位) |
30000 |
|
TTL 的超时时间。 |
60000 |
|
大于此大小的消息被视为大型消息。 |
100KB |
|
放弃阻塞调用之前的时间(毫秒)。 |
30000 |
|
连续重试之间的周期(以毫秒为单位)。 |
500 |
|
应用于重试间隔的乘数。 |
1 |
|
重试间隔的最大值。 |
2000 |
|
故障后应尝试重新连接多少次。 |
-1 |
|
是否应在转发消息中插入重复检测标头? |
|
|
消息应如何进行负载均衡? |
|
|
传播集群拓扑的最大跳数。 |
1 |
|
用于确认从连接到的服务器接收到的数据的窗口大小(以字节为单位)。 |
1048576 |
|
集群连接桥梁的流量控制。 |
-1(禁用) |
|
如果在故障转移过程中,等待回复的时间。-1 表示无限期等待。 |
-1 |
|
集群连接在加入集群后多久会通知集群其存在。 |
1000 |
|
此集群连接在加入集群后会通知集群其存在多少次 |
2 |
7. 发现组类型
名称 | 描述 |
---|---|
唯一名称 |
|
要监听的组的组播 IP 地址 |
|
组播组的 UDP 端口号 |
|
JGroups 配置文件名称。如果指定,服务器使用 JGroups 进行发现。 |
|
JGroups 通道的名称。如果指定,服务器使用指定的通道进行发现。 |
|
发现组在从特定服务器接收到最后一个广播后等待的时间,然后再从其列表中删除该服务器的连接器对条目。默认值为 10000 |
|
数据报套接字绑定的本地绑定地址 |
|
数据报套接字绑定的本地端口。默认值为 -1 |
|
initial-wait-timeout |
等待初始广播的时间,以便在集群中至少获得一个节点。默认值为 10000 |
8. 转向类型
名称 | 描述 |
---|---|
唯一名称 |
|
可选的转换器类名 |
|
这是否是一个独占转向。默认值为 false |
|
转向的路由名称 |
|
此转向将从中转向的地址 |
|
转向的转发地址 |
|
可选的核心过滤器表达式 |
|
如何在转向的消息上设置路由类型。默认值为 |
10. 队列类型
名称 | 描述 | 默认 |
---|---|---|
name |
唯一名称 |
n/a |
filter |
可选的核心过滤器表达式 |
n/a |
durable |
队列是否持久(持久)。 |
|
user |
与创建队列关联的用户的名称 |
n/a |
此队列上允许的最大消费者数量 |
-1(无最大值) |
|
是否删除所有消息并在没有消费者连接时阻止路由 |
|
|
仅将消息传递到一个连接的消费者 |
|
|
使用 last-value 语义 |
|
|
此队列应根据环形语义维护的大小 |
基于 |
|
consumers-before-dispatch |
在分发消息之前所需的消费者数量 |
0 |
delay-before-dispatch |
以毫秒为单位,等待 |
-1(无限期等待) |
11. 安全设置类型
名称 | 描述 |
---|---|
权限类型 |
|
要应用权限的角色的逗号分隔列表 |
|
可以用来将外部身份验证提供者(例如 LDAP)中的角色映射到内部角色的简单角色映射 |
|
应映射的外部角色 |
|
应分配给已验证用户的内部角色 |
12. 代理插件类型
名称 | 描述 |
---|---|
用于配置插件的属性 |
|
要实例化的代理插件类的名称 |
13. 指标插件类型
名称 | 描述 |
---|---|
用于配置插件的属性 |
|
要实例化的指标插件类的名称 |
14. 资源限制类型
名称 | 描述 | 默认 |
---|---|---|
应应用限制的用户名称 |
n/a |
|
匹配的用户允许的连接数 |
-1(无最大值) |
|
匹配的用户可以创建的队列数 |
-1(无最大值) |
15. 分组处理程序类型
名称 | 描述 | 默认 |
---|---|---|
一个唯一的名称 |
n/a |
|
|
n/a |
|
对 |
n/a |
|
等待决策的时间 |
5000 |
|
组绑定将使用多长时间。 |
-1(禁用) |
|
收割机运行以检查已超时组绑定的频率。仅对 |
30000 |
16. AMQP 连接类型
名称 | 描述 | 默认 |
---|---|---|
AMQP 代理连接 URI(必需) |
n/a |
|
一个唯一的名称 |
n/a |
|
代理身份验证用户(可选) |
n/a |
|
代理身份验证密码(可选) |
n/a |
|
故障后应尝试重新连接多少次。 |
-1(无限) |
|
代理连接会随着代理自动启动 |
true |