系統會定期檢查組態檔案,檢查頻率由 configuration-file-refresh-period 設定,預設值為 5000 毫秒。這些檢查可以透過指定 -1 來停用。

請注意,Log4J2 組態有其自己的重新載入機制,透過其自己的 log4j2.properties 檔案設定。請參閱記錄組態重新載入以了解更多詳細資訊。

一旦組態檔案 (broker.xml) 變更,以下模組將會自動重新載入

  • 位址設定

  • 安全性設定

  • 轉向器 (Diverts)

  • 位址與佇列

  • 橋接器 (Bridges)

如果使用模組化的 broker.xml,請務必同時閱讀重新載入模組化組態檔案

當從組態中移除位址、佇列和轉向器時,可以自動移除它們

config-delete-addresses
  • OFF (預設) - 在重新載入組態時不會移除位址。保留在附加佇列中的訊息將保持不變。

  • FORCE - 在重新載入組態時將移除位址及其佇列。保留在附加佇列中的訊息將會遺失

config-delete-queues
  • OFF (預設) - 在重新載入組態時不會移除佇列。保留在佇列中的訊息將保持不變。

  • FORCE - 將移除佇列。保留在佇列中的訊息將會遺失

config-delete-diverts
  • OFF (預設) - 在重新載入組態時不會移除轉向器。

  • FORCE - 在重新載入組態時將移除轉向器。

預設情況下,所有設定均為 OFF,因此在重新載入組態時不會移除位址、佇列和轉向器,從而降低遺失訊息的風險。

不再存在於組態檔案中的位址、佇列和轉向器可以透過 Web 介面、CLI 或 JMX 管理操作手動移除。

1. 可重新載入的參數

代理程式組態檔案有 2 個主要部分:<core><jms>。這兩個部分中的某些參數會受到監控,如果修改,則會在執行階段重新載入到代理程式中。

<jms> 下的元素是已棄用的。建議使用者使用 <core> 組態實體。

大多數重新載入的參數會在重新載入後立即生效。但是,有些參數除非重新啟動代理程式,否則不會生效。這些參數會在以下文字中特別指出。

1.1. <core>

1.1.1. <security-settings>

  • <security-setting> 元素

對任何 <security-setting> 元素所做的變更都會重新載入。每個 <security-setting> 都會定義符合位址的安全性角色。

  • match 屬性

    此屬性定義安全性設定所定義的位址。它可以採用萬用字元,例如「#」和「*」。

  • <permission> 子元素

每個 <security-setting> 都可以有一個 <permission> 元素清單,每個元素都會定義特定的權限-角色對應。每個權限都有 2 個屬性:「type」和「roles」。 「type」屬性定義允許的操作類型,「roles」定義允許執行此類操作的角色。請參閱使用者手冊以取得可以定義的操作清單。

載入後,安全性設定將立即生效。任何新的用戶端都將受限於新的安全性設定。任何現有的用戶端在執行新的安全性敏感操作時,也會受限於新的設定。

以下列出在 <security-settings> 元素中新增、刪除和更新元素/屬性的效果,以及是否可以進行變更。

操作 新增 刪除 更新

<security-settings>

X* (最多允許一個元素)

刪除它表示從正在執行的代理程式中刪除整個安全性設定。

N/A*

<security-setting>

新增一個元素表示在正在執行的代理程式中為位址新增一組新的安全性角色

刪除一個元素表示從正在執行的代理程式中移除位址的一組安全性角色

更新一個元素表示更新位址的安全性角色 (如果 match 屬性未變更),或者表示移除舊的 match 位址設定並新增一個新的 (如果 match 屬性已變更)

屬性 match

N/A*

X*

變更此值與刪除具有舊 match 值的整個 <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> 元素

每個 address-setting 元素都有一個 ‘match’ 屬性,用於定義此 address-setting 所定義的位址模式。它還具有一個子元素清單,用於定義符合位址的屬性。

此類別中重新載入的參數將在重新載入後立即生效。位址和佇列的刪除效果(非自動建立)由文件中所述的參數 config-delete-addressesconfig-delete-queues 控制。

以下列出在 address-settings 元素中新增、刪除和更新元素/屬性的效果,以及是否可以進行變更。

操作 新增 刪除 更新

<address-settings>

X (最多允許一個元素)

刪除它表示從正在執行的代理程式中刪除整個位址設定

N/A

<address-setting>

新增一個元素表示在正在執行的代理程式中為新位址新增一組位址設定

刪除一個表示從正在執行的代理程式中移除位址的一組位址設定

更新一個元素表示更新位址的位址設定 (如果 match 屬性未變更),或者表示移除舊的 match 位址設定並新增一個新的 (如果 match 屬性已變更)

屬性 match

N/A

X

變更此值與刪除具有舊 match 值的整個 <address-setting> 並新增一個具有新 match 值的新值相同。 </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 (不能存在多個)

重新載入後,已設定的當無路由時傳送至 DLA 將從正在執行的代理程式中移除。

重新載入後,當無路由時傳送至 DLA 將會更新。

<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 (不能存在多個)

重新載入後,已設定的組態刪除佇列將從正在執行的代理程式中移除。

重新載入後,組態刪除佇列將會更新。

<auto-create-addresses>

X (不能存在多個)

重新載入後,已設定的自動建立位址將從正在執行的代理程式中移除。

重新載入後,自動建立位址將會更新。

<auto-delete-addresses>

X (不能存在多個)

重新載入後,已設定的自動刪除位址將從正在執行的代理程式中移除。

重新載入後,自動刪除位址將會更新。

<config-delete-addresses>

X (不能存在多個)

重新載入後,已設定的 config-delete-addresses 將會從執行中的訊息代理程式中移除。

重新載入後,config-delete-addresses 將會更新。

<management-browse-page-size>

X (不能存在多個)

重新載入後,已設定的 management-browse-page-size 將會從執行中的訊息代理程式中移除。

重新載入後,management-browse-page-size 將會更新。

<default-purge-on-no-consumers>

X (不能存在多個)

重新載入後,已設定的 default-purge-on-no-consumers 將會從執行中的訊息代理程式中移除。

重新載入後,default-purge-on-no-consumers 將會更新。

<default-max-consumers>

X (不能存在多個)

重新載入後,已設定的 default-max-consumers 將會從執行中的訊息代理程式中移除。

重新載入後,default-max-consumers 將會更新。

<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> 元素都有一個「name」屬性以及一些子元素,用於定義轉移的屬性。

如果您刪除 <divert> 元素,現有的轉移將會被解除部署。

下方列出在 diverts 元素中新增、刪除和更新元素/屬性的效果,以及是否可以進行變更。

操作 新增 刪除 更新

<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(只能有一個存在)

重新載入後,單播路由類型將會從此位址解除部署,其包含的佇列也會被解除部署。

N/A

<queue>(在 <anycast> 下)

單播佇列會在重新載入後部署。

單播佇列將會被解除部署。

如需更新佇列,請參閱下一節 <queue>

<multicast>

X(只能有一個存在)

重新載入後,多播路由類型將會從此位址解除部署,其包含的佇列也會被解除部署。

N/A

<queue>(在 <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

重新載入後,佇列的使用者將會設定為新的值。