系统会定期检查配置⽂件,检查频率由 configuration-file-refresh-period 配置,默认值为 5000 毫秒。可以通过指定 -1 来停⽌这些检查。

请注意,Log4J2 配置有⾃⼰的重新加载机制,可以通过其⾃⼰的 log4j2.properties ⽂件配置。有关详细信息,请参阅 日志配置重新加载

⼀旦配置⽂件 (broker.xml) 更改,以下模块将⾃动重新加载

  • 地址设置

  • 安全设置

  • 转发

  • 地址和队列

  • 桥接

如果使⽤ 模块化的 broker.xml,请确保您也阅读了 重新加载模块化配置⽂件

地址、队列和转发可以在从配置中删除时⾃动删除

config-delete-addresses
  • OFF (默认) - 不会在配置重新加载时删除地址。附加到队列中的消息将保留。

  • FORCE - 会在配置重新加载时删除地址及其队列。附加到队列中的消息将丢失

config-delete-queues
  • OFF (默认) - 不会在配置重新加载时删除队列。队列中的消息将保留。

  • FORCE - 会删除队列。队列中的消息将丢失

config-delete-diverts
  • OFF (默认) - 不会在配置重新加载时删除转发。

  • FORCE - 会在配置重新加载时删除转发。

默认情况下,所有设置均为 OFF,因此在配置重新加载时不会删除地址、队列和转发,从而降低了丢失消息的风险。

不再出现在配置⽂件中的地址、队列和转发可以通过⽹页界⾯、CLI 或 JMX 管理操作⼿动删除。

1. 可重新加载的参数

代理配置⽂件包含两个主要部分,<core><jms>。两个部分中的一些参数会被监控,如果被修改,将在运⾏时重新加载到代理中。

<jms> 下的元素已弃用。鼓励⽤户使⽤ <core> 配置实体。

⼤多数重新加载的参数在重新加载后⽴即⽣效。但是,也有一些参数需要重新启动代理才能⽣效。此类参数将在以下⽂本中特别说明。

1.1. <core>

1.1.1. <security-settings>

  • <security-setting> 元素

对任何 <security-setting> 元素的更改都将被重新加载。每个 <security-setting> 为匹配的地址定义安全角色。

  • match 属性

    此属性定义为其定义安全设置的地址。它可以使⽤通配符,如“#”和“*”。

  • <permission> 子元素

每个 <security-setting> 可以具有⼀个 <permission> 元素列表,每个元素定义⼀个特定的权限-角色映射。每个权限都有两个属性“type”和“roles”。“type”属性定义允许的操作类型,“roles”定义允许执⾏此操作的角色。请参阅⽤户⼿册以了解可以定义的操作列表。

加载后,安全设置将⽴即⽣效。任何新的客户端都将受到新的安全设置的约束。任何现有的客户端在执⾏新的安全敏感操作时也将受到新的设置的约束。

以下是添加、删除和更新 <security-settings> 元素中的元素/属性的效果,以及是否可以进⾏更改。

操作 添加 删除 更新

<security-settings>

X* (最多允许⼀个元素)

删除它意味着从运⾏中的代理中删除所有安全设置。

N/A*

<security-setting>

添加⼀个元素意味着为运⾏中的代理中的地址添加⼀组新的安全角色

删除⼀个元素意味着从运⾏中的代理中删除⼀组为地址定义的安全角色

更新⼀个元素意味着更新地址的安全角色(如果 match 属性未更改),或意味着删除旧的匹配地址设置并添加⼀个新的设置(如果 match 属性已更改)

属性 match

N/A*

X*

更改此值与删除具有旧匹配值的整个 <security-setting> 并添加具有新匹配值的 </security-setting> 相同

<permission>

添加⼀个意味着向运⾏时代理添加⼀个新的权限定义

从运⾏时代理中删除⼀个权限

在运⾏时代理中更新⼀个权限-角色

属性 type

N/A*

X*

更改 type 值意味着删除旧权限并向运⾏时代理添加此类型的权限。

属性 roles

N/A*

X*

更改“roles”值意味着更新运⾏时代理中权限的允许角色

  • N/A 意味着此操作不适用。

  • X 意味着此操作不允许。

1.1.2. <address-settings>

  • <address-settings> 元素

<address-settings> 下元素的更改将被重新加载到运⾏时代理中。它包含⼀个 <address-setting> 元素列表。

  • <address-setting> 元素

每个地址设置元素都有⼀个“match”属性,它定义了为其定义此地址设置的地址模式。它还具有⼀个用于定义匹配地址属性的子元素列表。

此类别中重新加载的参数将在重新加载后⽴即⽣效。删除地址和队列(未⾃动创建)的效果由参数 config-delete-addressesconfig-delete-queues 控制,如⽂档所述。

以下是添加、删除和更新地址设置元素中的元素/属性的效果,以及是否可以进⾏更改。

操作 添加 删除 更新

<address-settings>

X(最多允许⼀个元素)

删除它意味着从运⾏中的代理中删除所有地址设置

N/A

<address-setting>

添加⼀个元素意味着为运⾏中的代理中的新地址添加⼀组地址设置

删除⼀个元素意味着从运⾏中的代理中删除⼀组为地址定义的地址设置

更新⼀个元素意味着更新地址的地址设置(如果 match 属性未更改),或意味着删除旧的匹配地址设置并添加⼀个新的设置(如果 match 属性已更改)

属性 match

N/A

X

更改此值与删除具有旧匹配值的整个 <address-setting> 并添加具有新匹配值的新的 <address-setting> 相同。

<dead-letter-address>

X (最多允许⼀个)

从运⾏中的代理中删除已配置的死信地址。

重新加载后,匹配地址的死信地址将被更新。

<expiry-address>

X (最多允许⼀个)

从运⾏中的代理中删除已配置的过期地址。

重新加载后,匹配地址的过期地址将被更新。

<expiry-delay>

X (最多允许⼀个)

从运⾏中的代理中删除已配置的过期延迟。

重新加载后,匹配地址的过期延迟将被更新。

<redelivery-delay>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的重新投递延迟。

重新加载后,匹配地址的重新投递延迟将被更新。

<redelivery-delay-multiplier>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的重新投递延迟乘数。

重新加载后,重新投递延迟乘数将被更新。

<max-redelivery-delay>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的重新投递最大延迟。

重新加载后,重新投递最大延迟将被更新。

<max-delivery-attempts>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的最大投递尝试次数。

重新加载后,最大投递尝试次数将被更新。

<max-size-bytes>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的最大字节数。

重新加载后,最大字节数将被更新。

<page-size-bytes>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的页⾯大小(字节)。

重新加载后,页⾯大小(字节)将被更新。

<address-full-policy>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的地址满策略。

重新加载后,地址满策略将被更新。

<message-counter-history-day-limit>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的消息计数器历史记录天数限制。

重新加载后,消息计数器历史记录天数限制将被更新。

<last-value-queue>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的最新值队列(不再是最新值队列)。

重新加载后,最新值队列将被更新。

<redistribution-delay>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的重新分配延迟。

重新加载后,重新分配延迟将被更新。

<send-to-dla-on-no-route>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的无路由时发送到死信地址。

重新加载后,无路由时发送到死信地址将被更新。

<slow-consumer-threshold>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的慢速消费者的阈值。

重新加载后,慢速消费者的阈值将被更新。

<slow-consumer-policy>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的慢速消费者策略。

重新加载后,慢速消费者策略将被更新。

<slow-consumer-check-period>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的慢速消费者检查周期。(这意味着慢速消费者检查线程将被取消)

重新加载后,慢速消费者检查周期将被更新。

<auto-create-queues>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的⾃动创建队列。

重新加载后,⾃动创建队列将被更新。

<auto-delete-queues>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的⾃动删除队列。

重新加载后,⾃动删除队列将被更新。

<config-delete-queues>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的 config-delete-queues。

重新加载后,config-delete-queues 将被更新。

<auto-create-addresses>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的⾃动创建地址。

重新加载后,⾃动创建地址将被更新。

<auto-delete-addresses>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的⾃动删除地址。

重新加载后,⾃动删除地址将被更新。

<config-delete-addresses>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的 config-delete-addresses。

重新加载后,config-delete-addresses 将被更新。

<management-browse-page-size>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的管理浏览页⾯大小。

重新加载后,管理浏览页⾯大小将被更新。

<default-purge-on-no-consumers>

X (最多允许⼀个)

重新加载后,从运⾏中的代理中删除已配置的默认无消费者时清除。

重新加载后,默认无消费者时清除将被更新。

<default-max-consumers>

X (最多允许⼀个)

配置的默认-最大消费者将在重新加载后从运行中的代理中删除。

默认-最大消费者将在重新加载后更新。

<default-queue-routing-type>

X (最多允许⼀个)

配置的 default-queue-routing-type 将在重新加载后从运行中的代理中删除。

default-queue-routing-type 将在重新加载后更新。

<default-address-routing-type>

X (最多允许⼀个)

配置的 default-address-routing-type 将在重新加载后从运行中的代理中删除。

default-address-routing-type 将在重新加载后更新。

1.1.3. <diverts>

所有 <divert> 元素将被重新加载。每个 <divert> 元素都有一个“名称”和几个子元素,用于定义转移的属性。

如果您删除其 <divert> 元素,则现有转移将被取消部署。

以下是添加、删除和更新转移元素/属性的效果,无论更改是否可以进行。

操作 添加 删除 更新

<diverts>

X (最多允许⼀个)

删除它意味着删除(取消部署)运行中的代理中的所有转移。

N/A

<divert>

添加一个新的转移。它将在重新加载后部署。

删除它意味着转移将在重新加载后被取消部署。

对已部署的转移没有影响(除非重新启动代理,在这种情况下,转移将被重新部署)。

属性 name

N/A

X

将部署一个具有该名称的新转移。(如果它尚未在代理中)。否则没有影响。

<transformer-class-name>

X (最多允许⼀个)

对已部署的转移没有影响。(除非重新启动代理,在这种情况下,转移将在没有转换器类的情况下部署)。

对已部署的转移没有影响。(除非重新启动代理,在这种情况下,转移具有转换器类)。

<exclusive>

X (最多允许⼀个)

对已部署的转移没有影响。(除非重新启动代理)。

对已部署的转移没有影响。(除非重新启动代理)。

<routing-name>

X (最多允许⼀个)

对已部署的转移没有影响。(除非重新启动代理)。

对已部署的转移没有影响。(除非重新启动代理)。

<address>

X (最多允许⼀个)

对已部署的转移没有影响。(除非重新启动代理)。

对已部署的转移没有影响。(除非重新启动代理)。

<forwarding-address>

X (最多允许⼀个)

对已部署的转移没有影响。(除非重新启动代理)。

对已部署的转移没有影响。(除非重新启动代理)。

<filter>

X (最多允许⼀个)

对已部署的转移没有影响。(除非重新启动代理)。

对已部署的转移没有影响。(除非重新启动代理)。

<routing-type>

X (最多允许⼀个)

对已部署的转移没有影响。(除非重新启动代理)。

对已部署的转移没有影响。(除非重新启动代理)。

1.1.4. <addresses>

<addresses> 元素包含一个 <address> 元素列表。更改后,<addresses> 中的所有 <address> 元素将被重新加载。

重新加载后,所有新地址(以及预先配置的队列)将被部署到运行中的代理,而配置中缺少的所有地址将被取消部署。

此类别中重新加载的参数将在重新加载后立即生效。删除地址和队列的效果(不是自动创建的)由参数 config-delete-addressesconfig-delete-queues 控制,如本文档所述。

以下是添加、删除和更新 <addresses> 元素中的元素/属性的效果,无论更改是否可以进行。

操作 添加 删除 更新

<addresses>

X(最多存在一个)

删除它意味着删除(取消部署)运行中的代理中的所有转移。

N/A

<address>

将在运行中的代理中部署一个新的地址。

相应的地址将被取消部署。

N/A

属性 name

N/A

X

重新加载后,旧名称的地址将被取消部署,而新地址将被部署。

<anycast>

X(最多存在一个)

anycast 路由类型将从该地址取消部署,以及其包含的队列将在重新加载后取消部署。

N/A

<queue>(在 <anycast> 下)

anycast 队列将在重新加载后部署。

anycast 队列将被取消部署。

有关更新队列,请参见下一节 <queue>

<multicast>

X(最多存在一个)

multicast 路由类型将从该地址取消部署,以及其包含的队列将在重新加载后取消部署。

N/A

<queue>(在 <multicast> 下)

multicast 队列将在重新加载后部署。

multicast 队列将被取消部署。

有关更新队列,请参见下一节 <queue>

1.1.5. <queue>

对任何 <queue> 元素的更改将被重新加载到运行中的代理。

重新加载后,所有新队列将被部署到运行中的代理,而配置中缺少的所有队列将被取消部署。

此类别中重新加载的参数将在重新加载后立即生效。删除地址和队列的效果(不是自动创建的)由参数 config-delete-addressesconfig-delete-queues 控制,如本文档所述。

以下是添加、删除和更新 <queue> 元素中的元素/属性的效果,无论更改是否可以进行。

操作 添加 删除 更新

<queue>

重新加载后部署一个新的队列。

队列将在重新加载后被取消部署。

N/A

属性 name

N/A

X

具有新名称的队列将在重新加载后被部署,而具有旧名称的队列将被取消部署(参见上面的注释)。

属性 max-consumers

如果 max-consumers > 当前消费者,max-consumers 将在重新加载时更新。

max-consumers 将被重置为默认值 -1

如果 max-consumers > 当前消费者,max-consumers 将在重新加载时更新。

属性 purge-on-no-consumers

重新加载时,purge-on-no-consumers 将更新。

将被重置为默认值 false

重新加载时,purge-on-no-consumers 将更新。

属性 enabled

重新加载时,enabled 将更新。

将被重置为默认值 true

重新加载时,enabled 将更新。

属性 exclusive

重新加载时,exclusive 将更新。

将被重置为默认值 false

重新加载时,exclusive 将更新。

属性 group-rebalance

重新加载时,group-rebalance 将更新。

将被重置为默认值 false

重新加载时,group-rebalance 将更新。

属性 group-rebalance-pause-dispatch

重新加载时,group-rebalance-pause-dispatch 将更新。

将被重置为默认值 false

重新加载时,group-rebalance-pause-dispatch 将更新。

属性 group-buckets

重新加载时,group-buckets 将更新。

将被重置为默认值 -1

重新加载时,group-buckets 将更新。

属性 group-first-key

重新加载时,group-first-key 将更新。

将被重置为默认值 null

重新加载时,group-first-key 将更新。

属性 last-value

重新加载时,last-value 将更新。

将被重置为默认值 false

重新加载时,last-value 将更新。

属性 last-value-key

重新加载时,last-value-key 将更新。

将被重置为默认值 null

重新加载时,last-value-key 将更新。

属性 non-destructive

重新加载时,non-destructive 将更新。

将被重置为默认值 false

重新加载时,non-destructive 将更新。

属性 consumers-before-dispatch

重新加载时,consumers-before-dispatch 将更新。

将被重置为默认值 0

重新加载时,consumers-before-dispatch 将更新。

属性 delay-before-dispatch

重新加载时,delay-before-dispatch 将更新。

将被重置为默认值 -1

重新加载时,delay-before-dispatch 将更新。

属性 ring-size

重新加载时,ring-size 将更新。

将被重置为默认值 -1

重新加载时,ring-size 将更新。

<filter>

过滤器将在重新加载后添加。

过滤器将在重新加载后删除。

过滤器将在重新加载后更新。

<durable>

队列持久性将在重新加载后设置为给定值。

队列持久性将在重新加载后设置为默认值 true

队列持久性将在重新加载后设置为新值。

<user>

队列用户将在重新加载后设置为给定值。

队列用户将在重新加载后设置为默认值 null

队列用户将在重新加载后设置为新值。