本章提供每個版本的以下資訊

  • 完整版本說明連結,其中包含此版本中解決的所有問題。

  • 適用時的「重點」簡短清單。

  • 如有必要,從先前版本升級時所需的特定步驟。

如果升級跨越多個版本,則需要依序遵循每個版本的步驟。
除了此處概述的任何特定於版本的升級指示之外,請遵循升級 Broker章節中概述的一般升級程序。

1. 2.38.0

1.1. 重點

  • 現在支援 WebSocket 壓縮。當透過 WebSockets 進行通訊時,此壓縮可以透明地用於 AMQP、STOMP 或 MQTT。

  • ActiveMQServerMessagePlugin 現在具有 messageMoved() 回呼。

  • 核心橋接器組態現在支援 client-id,這將使識別遠端 Broker 上的橋接連線更加容易。

  • consumer CLI 命令現在透過為 --receive-timeout 指定 -1 來支援「永久」使用訊息。

  • 驗證與授權快取現在具有詳細的偵錯記錄。

  • Broker 管理已進行了一些更新

    • 文件已改進,包含更多關於 Jolokia 的範例,以及關於管理方法選項語法的新子章節。

    • 現在可以將空的「選項」傳遞給接受它們的管理方法

    • 傳回分頁結果的管理方法現在可以透過為頁面或 pageSize 指定 -1 來一起傳回所有結果。

    • 管理方法選項語法現在支援 NOT_EQUALS 運算子,以便在篩選管理操作結果時更具彈性。

    • 現在可以透過 JSON 完成透過管理建立的轉移組態。

  • TextFileCertificateLoginModule 現在支援 DN 屬性值的標準化。有關更多詳細資訊,請參閱 ARTEMIS-5102

1.2. 從 2.37.0 升級

  • 由於 ARTEMIS-5096,Web 主控台的封存(即 console.war)現在將被解壓縮。此變更是為了從封存中移除某些已在 Broker 的主要 lib 目錄中發佈的 jar 檔案。消除這些重複的 jar 將減少 Broker 發佈的大小,這也表示主控台在某些情況下將使用更新的相依性,並防止安全工具標記較舊的 jar。

  • 由於 ARTEMIS-5101,用於對稱密碼遮罩的預設敏感字串編解碼器中的 two-way 演算法現在已被棄用。它將繼續運作,但會在日誌中列印警告。這是逐步消除組態檔案中儲存密碼的第一步,除了透過強大的單向雜湊演算法編碼的密碼。其他用例將被推向基於憑證的安全(即相互 TLS)或不需要密碼的等效機制。

  • 由於 ARTEMIS-5085,參數 retryIntervalMultipliermaxRetryInterval 現在將套用於「初始」連線嘗試(即透過 initialConnectAttempts 控制)。這是為了修正這些參數被錯誤忽略的錯誤。

2. 2.37.0

2.1. 重點

  • 除了 run 之外的 CLI 命令的環境變數可透過 artemis-utility.profile 檔案進行組態。

  • 除了 run 之外的 CLI 命令的記錄組態可透過 log4j2-utility.properties 檔案進行組態。

  • run 命令已從 artemis shell 中移除,使用 artemis 指令碼(Windows 上為 artemis.cmd)來執行它。

  • 投票 (共用無任何複寫仲裁協定) 的版本相容性已在 ARTEMIS-4986 中修正。

2.2. 從 2.36.0 升級

除了 run 之外的 CLI 命令現在將需要透過 artemis-utility.profile 檔案定義環境變數,並透過 log4j2-utility.properties 檔案定義記錄組態。有關更多資訊,請參閱 記錄

3. 2.36.0

3.1. 重點

  • 由與 GitHub 的 Dependabot 整合觸發的眾多相依性升級。

  • 透過 ARTEMIS-4949 改善涉及較慢 IO 裝置(例如 NFS)和 NIO 日誌的用例的穩定性。

  • 由於 ARTEMIS-4814,位址管理員中的程式碼最佳化可減少 CPU 使用率並提高涉及大量位址和佇列的用例的 Broker 可擴充性。

  • 透過 ARTEMIS-3509 改善涉及透過 WebSockets 連線的 STOMP 用戶端的用例的穩定性。

  • 為開發人員提供了許多內部「程式碼整理」改進,以使程式碼庫更簡單、更一致。

4. 2.35.0

5. 2.34.0

5.2. 從 2.33.0 升級

  • 由於 ARTEMIS-4712LDAPLoginModule 中不再支援透過 login.config 中的 connectionPool 屬性組態的連線集區功能。login.config 仍可使用 connectionPool 屬性。不會擲回錯誤。但是,無論組態如何,連線將不再集區。

  • 由於 ARTEMIS-4498,Web 主控台現在將報告所有內部物件。

    • 這樣做是為了讓管理員在事情未按預期運作時採取行動、取得這些物件的指標,並讓 Broker 更加透明。

    • 這包括所有 Openwire Advisor 佇列和位址、MQTT 內部物件、叢集儲存和轉發 (SNF) 佇列、鏡像 SNF。

    • 如果您打算控制 Web 主控台上某些使用者的存取權,則可能需要重新檢查授權。

  • CLI 操作 ./artemis queue stat 的輸出已改善和更新。如果您在指令碼中剖析先前的輸出,您將看到輸出中的差異。

    • 不建議剖析 CLI 操作的輸出。您可以使用 jolokia 通過管理來進行呼叫,並使用適當的 JSON 輸出。

6. 2.33.0

6.1. 重點

  • 支援 CLI producer 命令上的 JSON 格式化類型屬性

  • 新的 CLI 命令 pwd,用於顯示與目前執行個體相關的目錄

  • Maven 材料清單 (BOM) artemis-bom,用於簡化整合

  • 排程訊息的「FirstMessage」API

  • 用於管理操作的新 「檢視」和「編輯」權限,可透過 broker.xml 中的 security-settings 進行組態

  • bootstrap.xml 中組態的內嵌 Web 伺服器的新 sslAutoReload 參數,用於偵測並在磁碟上變更 SSL 儲存時自動重新載入

  • 在鏡像和分頁方面提升效能

  • 記錄指標,以降低遺失日誌中 WARNERROR 訊息的風險。

  • 大幅改進關於 網路隔離 (又稱裂腦) 的文件

  • 可插拔鎖定管理員 (又稱可插拔仲裁投票) 已脫離「實驗性」狀態,可供一般使用

6.2. 從 2.32.0 升級

  • 由於 ARTEMIS-4532,與 MQTT 主題和訂閱相關的位址和佇列名稱可能會變更。如果以下兩種情況都為真,則會影響 MQTT 用例

    1. 此代理程式被設定為使用萬用字元語法,而此語法不符合MQTT 萬用字元語法(例如,預設的萬用字元語法)。

    2. 您在 MQTT 主題名稱或篩選器中使用來自代理程式萬用字元語法的字元。例如,如果您使用的是預設的萬用字元語法和一個名為 1.0/group/device 的 MQTT 主題。此處的點 (.) 字元是代理程式萬用字元語法的一部分,並且正在 MQTT 主題名稱中使用。

      在這種情況下,來自代理程式萬用字元語法中,與 MQTT 萬用字元語法中不符的字元會使用反斜線 (即 \) 跳脫。為了避免這種轉換,您可以設定代理程式使用 MQTT 萬用字元語法,或變更 MQTT 主題名稱或篩選器的名稱。

    此變更也會影響使用 # 而非 < 作為萬用字元用途的 OpenWire JMS 消費者。在先前的版本中,從 OpenWire 萬用字元格式轉換為 Core 萬用字元格式時,# 字元只是被傳遞過去。然而,現在 # 字元會在轉換過程中被跳脫。應用程式使用 # 作為 OpenWire JMS 用戶端的萬用字元是個錯誤;> 是在關於萬用字元的 ActiveMQ Classic 文件中指定的正確字元。

  • 由於ARTEMIS-4559,嵌入代理程式並且也依賴 artemis-quorum-ri 和/或 artemis-quorum-api 模組和/或使用 org.apache.activemq.artemis.core.config.ha.DistributedPrimitiveManagerConfiguration 的人員將需要分別使用 artemis-lockmanager-riartemis-lockmanager-apiorg.apache.activemq.artemis.core.config.ha.DistributedLockManagerConfiguration。先前這些在文件中被標示為「實驗性」,並且僅在名稱上做了變更,以釐清其概念上的用途。此外,關於高可用性和網路隔離(即腦裂)的文件已被大幅重構,使其更加清晰和全面。

7. 2.32.0

7.1. 重點

7.2. 從 2.31.x 升級

  • 由於ARTEMIS-4501,當對應的連線階段過期時,MQTT 訂閱佇列將會自動移除,無論是基於 MQTT 5 用戶端傳遞的連線階段過期間隔,或是基於為 MQTT 3.x 用戶端或未明確傳遞連線階段過期間隔的 MQTT 5 用戶端所設定的 defaultMqttSessionExpiryInterval

    在此變更之前,移除訂閱佇列依賴於通用的 auto-delete-* address-settings

    這些設定現在不再需要。

    改為設定 defaultMqttSessionExpiryInterval

  • 由於ARTEMIS-3474,以下組態元素在它們出現的任何位置(例如,broker.xmlbootstrap.xml 等)都已變更,雖然所有先前的組態將在一段時間內仍然被支援

    • masterprimary

    • slavebackup

    • check-for-live-servercheck-for-active-server

    • whitelistallowlist

    • blacklistdenylist

    此外,文件中和管理介面中對這些元素的引用也已變更。叢集拓撲資訊(例如,從 listNetworkTopology 返回的資訊)將包含作為主要伺服器的節點的 primary live 項目。

8. 2.31.2

9. 2.31.1

9.1. 重點

  • 錯誤修正和元件升級

10. 2.31.0

10.1. 重點

  • 引入了一個互動式 shell,用於執行 CLI 命令以及Bash 和 ZSH 自動完成支援

  • 新增了一個 CLI 叢集驗證工具,以協助監控代理程式拓撲。透過 check cluster 命令使用。

  • 當使用叢集時,queue stat 命令現在能夠驗證整個叢集拓撲上的訊息計數。

  • 新增了對代理程式連線的AMQP 聯合支援。

  • MQTT 訂閱狀態現在會被持久化.

  • 顯著改進了分頁 JDBC 持久性。

  • 將大部分的文件從 MarkDown 轉換為 AsciiDoc。有關更多詳細資訊,請參閱ARTEMIS-4383

  • 許多其他錯誤修正和改進。

10.2. 從 2.30.0 升級

  • 由於ARTEMIS-4372 和新 Artemis shell 功能的引入,當您調用 ./artemis 時,它現在會啟動新的 shell 來瀏覽 CLI 命令,而不是僅吐出 help 文字。

11. 2.30.0

11.1. 重點

  • 這主要是一個錯誤修正版本,有一些小的改進和少量的依賴性升級。有關所有詳細資訊,請參閱版本說明

12. 2.29.0

12.1. 重點

  • 此版本針對大型訊息進行了廣泛的測試和修正,其中一些 JIRA 專門針對此主題。有關更多資訊,請參閱版本說明

12.2. 從 2.28.0 升級

  • 由於ARTEMIS-4151,未在 management.xmlrole-accessallowlist 中定義的 MBean 的預設存取權限現在為唯讀。這是一項預防措施,以確保沒有隨代理程式部署的意外 MBean 構成風險。然而,這也會影響 JVM 特定和平台 MBean(例如,允許手動垃圾收集、「飛行記錄」等)。現在必須在 management.xml 中手動啟用對這些 MBean 的寫入存取和一般操作存取,方法是變更 default-access(不建議)或為相關的特定 MBean 具體設定 role-access

    這適用於所有 MBean 存取,包括直接透過 JMX 和透過 Jolokia JMX-HTTP 橋接。
  • 由於ARTEMIS-4212,代理程式將拒絕在 broker.xml 中未指定路由類型的位址定義,例如:

    <address name="myAddress"/>

    此類組態需要變更為指定路由類型,例如:

    <address name="myAddress">
       <anycast/>
    </address>

    <address name="myAddress">
       <multicast/>
    </address>

    如果設定了沒有路由類型的位址,代理程式將拋出類似這樣的異常並無法啟動

    java.lang.IllegalArgumentException: AMQ229247: Invalid address configuration for 'myAddress'. Address must support multicast and/or anycast.
          at org.apache.activemq.artemis.core.deployers.impl.FileConfigurationParser.parseAddressConfiguration(FileConfigurationParser.java:1580)
          at org.apache.activemq.artemis.core.deployers.impl.FileConfigurationParser.parseAddresses(FileConfigurationParser.java:1038)
          at org.apache.activemq.artemis.core.deployers.impl.FileConfigurationParser.parseMainConfig(FileConfigurationParser.java:804)
          at org.apache.activemq.artemis.core.config.impl.FileConfiguration.parse(FileConfiguration.java:56)
          at org.apache.activemq.artemis.core.config.FileDeploymentManager.readConfiguration(FileDeploymentManager.java:81)
          at org.apache.activemq.artemis.integration.FileBroker.createComponents(FileBroker.java:120)
          at org.apache.activemq.artemis.cli.commands.Run.execute(Run.java:119)
          at org.apache.activemq.artemis.cli.Artemis.internalExecute(Artemis.java:212)
          at org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:162)
          at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
          at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.base/java.lang.reflect.Method.invoke(Method.java:566)
          at org.apache.activemq.artemis.boot.Artemis.execute(Artemis.java:144)
          at org.apache.activemq.artemis.boot.Artemis.main(Artemis.java:61)
  • 由於ARTEMIS-3707,所有對 javax.transaction.TransactionManager 的使用都已從 JCA 資源配接器中移除。然而,這使得 transactionTimeout 啟用組態屬性變得無用。一些現有使用者依賴於此行為,因此它已恢復並為了將來移除而正確地標記為已過時。

13. 2.28.0

13.1. 重點

  • 一如既往的錯誤修正和改進

  • ARTEMIS-4136 鏡像同步複製

    • 鏡像現在有一個選項可以設定 sync=true。來自用戶端的封鎖操作將等待鏡像上的來回行程。

  • ARTEMIS-4065 移除分頁計數器日誌記錄

    • 我們不再將分頁計數器記錄儲存在日誌中,這應該可以簡化操作並提高效能。

13.2. 從 2.27.0 升級

  • 由於ARTEMIS-3871,用於 MQTT 共享訂閱佇列的命名模式已變更。先前,訂閱佇列根據 MQTT SUBSCRIBE 資料包中提供的訂閱名稱命名。然而,MQTT 允許在多個訂閱中使用相同的名稱,而代理程式中的佇列必須唯一命名。現在,訂閱佇列將根據訂閱名稱和主題名稱命名,以便所有訂閱佇列名稱都是唯一的。升級前,請確保所有 MQTT 共享訂閱都是空的。當訂閱者重新連線時,它們將會獲得一個新的訂閱佇列。如果它們不是空的,您可以透過管理方式將訊息移動到新的訂閱佇列。

14. 2.27.1

14.1. 重點

  • 錯誤修正

  • AMQP 橋接器上的大型訊息損壞

  • 回滾大量交易將需要很長時間處理

  • 改進了自動建立和自動刪除佇列。

15. 2.27.0

15.1. 重點

  • 2.27.0 引入了一個新的升級工具,以協助將您的執行個體遷移到較新的版本。

  • 用戶端和代理程式現在使用 SLF4J 作為其日誌記錄 API。

  • 代理程式發行版現在使用 Log4J 2 作為其日誌記錄實作。

15.2. 從 2.26.0 升級

想要日誌記錄的用戶端應用程式現在將需要提供一個適當的 SLF4J 支援的日誌記錄實作,並根據其需求進行適當的設定。有關更多資訊以及使用 Log4J 2 的範例,請參閱用戶端應用程式日誌記錄

代理程式發行版現在包含並設定 Log4J 2 作為其日誌記錄實作,有關更多詳細資訊,請參閱日誌記錄。如果升級現有的代理程式執行個體而不是建立新的執行個體,則需要對代理程式現有執行個體的 /etc 和 /bin 檔案進行一些設定等更新。

您可以使用從新下載的代理程式中的新升級輔助工具來重新整理現有代理程式執行個體的各種組態檔案和腳本。broker.xml 和資料會保持原樣。

在執行命令之前,您應該備份現有的代理程式執行個體。

可以從新下載的代理程式主目錄執行 ./artemis upgrade <path-to-your-instance> 來執行該命令。

在更新檔案的過程中,大多數對舊設定檔和腳本的自訂設定將會遺失。因此,您應該比較舊的設定檔和更新後的設定檔,然後根據需要移植您可能進行的任何遺失的自訂設定。升級命令本身會將它變更的較舊檔案複製到實例目錄中的 old-config-bkp. 資料夾中。

同樣地,如果您自訂了舊的 logging.properties 檔案,您可能需要為新的 log4j2.properties 檔案準備類似的變更。

另請注意,broker.xml 中的 configuration-file-refresh-period 設定不再涵蓋記錄設定的重新整理。Log4J 2 有自己的設定重新載入處理機制,透過 Log4J 設定檔本身的 monitorInterval 屬性進行設定。建立的預設 <instance>/etc/log4j2.properties 檔案已設定 5 秒的 monitorInterval 值,以與先前的預設代理程式行為對齊。

15.3. 手動更新

或者,您可以不使用上述的升級協助命令,而是依照一般升級程序以及下方的其他步驟來手動執行更新

  1. 應使用 Log4J 2 設定建立新的 <instance>/etc/log4j2.properties 檔案。「artemis create」CLI 命令使用的檔案可以從以下位置下載:log4j2.properties

  2. 應刪除舊的 <instance>/etc/logging.properties JBoss Logging 設定檔。

  3. 需要進行相關的啟動腳本或設定檔清理:自 2.26.0 以來所需的變更差異檔案可在這裡找到(適用於 *nix),或在這裡找到(適用於 Windows)。

16. 2.26.0

16.1. 重點

  • 錯誤修正和改進

16.2. 從 2.25.0 升級

  1. 由於 ARTEMIS-4006artemis-jms-client-allartemis-jakarta-client-all 用戶端已從二進位發行版本的 lib/client 目錄中移除。如果您使用這些程式庫,可以在 Maven Central 找到它們(例如,這裡)。請參閱用戶端類別路徑文件以取得更多資訊。

  2. 我們已從程式碼庫和文件中移除 REST 介面。如果您仍然需要 REST 介面,您可以存取仍然可用的最新版本。您仍然可以按照先前的文件中的步驟來建置和部署介面。但是,您應該停止使用它,因為它將不再維護。

  3. 由於 ARTEMIS-3980,Web 內容已從二進位發行版本中移除。我們現在將具有根目標的 Web 要求重新導向至管理主控台。若要在目前的執行個體上啟用此新的重新導向行為,您必須更新 bootstrap.xml。變更

    <web path="web">

    <web path="web" rootRedirectLocation="console">

    如果您過去習慣於自訂索引頁面或在 web 資料夾中新增自訂內容,請參閱Web 伺服器文件以取得有關停用重新導向和啟用 Web 內容的更多資訊。

17. 2.25.0

17.1. 重點

  • 改善分頁流程控制

  • 許多其他錯誤修正和改進

18. 2.24.0

18.1. 重點

  • 簡化的頁面快取和檔案只讀取到佇列中,而無需軟快取。

18.2. 從 2.23.0 升級

  1. 由於 ARTEMIS-3851,使用 CleanSession=1 的 MQTT 3.x 訂閱者所建立的佇列現在是非持久性,而不是持久性。這可能會影響先前僅針對其角色具有 createDurableQueue 的 MQTT 用戶端的 security-settings。現在他們也需要 createNonDurableQueue。同樣地,這僅對使用 CleanSession=1 的 MQTT 3.x 用戶端有潛在的影響。

  2. 由於 ARTEMIS-3892,指派給佇列的使用者名稱將基於經過驗證的使用者,而不是僅基於用戶端應用程式提交的使用者名稱。這將影響以下的使用案例

    1. login.config 設定為 GuestLoginModule 時,這會導致某些使用者在驗證過程中被指派特定的使用者名稱和角色。

    2. login.config 設定為 CertificateLoginModule 時,這會導致使用者被指派與其 SSL 憑證的主體 DN 對應的使用者名稱和角色。

    在這些情況下,代理程式會將此指派的(即經過驗證的)使用者名稱用於任何使用連線建立的佇列。過去,佇列的使用者名稱會留空白。

19. 2.23.1

19.1. 重點

  • ARTEMIS-3856 - 無法將通道狀態變更為 ReadyForWriting:java.util.ConcurrentModificationException

20. 2.23.0

21. 2.22.0

21.1. 重點

  • cluster-connection 上的預設 producer-window-size 已變更為 1MB,以減輕具有高延遲網路環境中潛在的 OutOfMemoryErrors。

22. 2.21.0

22.1. 重點

22.2. 從 2.20.0 升級

  1. 由於 XML 結構描述變更以修正不精確的網域名稱,因此需要更新 2 個檔案

    1. etc/bootstrap.xml

    2. etc/management.xml

      在這兩個檔案中,將 XML 命名空間從 activemq.org 變更為 activemq.apache.org,例如,在 bootsrap.xml 中使用

       <broker xmlns="https://activemq.dev.org.tw/schema">

      management.xml 中使用

       <management-context xmlns="https://activemq.dev.org.tw/schema">
  2. 如果您使用JDBC 持久性,則由於 ARTEMIS-3679 中的變更,您需要更新資料庫。NODE_MANAGER_STORE 上的 HOLDER_EXPIRATION_TIME 資料行從 TIMESTAMP 變更為 BIGINT(或 Oracle 上的 NUMBER(19))。您必須停止任何正在存取該表格的代理程式,並捨棄它或針對您的資料庫執行適當的 ALTER TABLE 陳述式。如果您捨棄表格,則代理程式重新啟動時會自動重新建立表格,並重新填入新的自動產生節點 ID。

  3. 如果您使用 JGroups,則由於 ARTEMIS-2413 中的變更,JGroups 從 3.x 更新為 5.x,因此您需要更新 JGroups 設定。許多協定已變更,而且沒有自動化工具可讓舊設定保持在最新狀態,因此請參閱 JGroups 文件以取得有關新設定的更多詳細資訊。您可以在JGroups 儲存庫中找到範例設定(例如,tcp.xmludp.xml)。

23. 2.20.0

23.1. 重點

  • 現在需要 Java 11。

24. 2.19.0

24.1. 重點

  • 透過管理 API 重新播放保留日誌記錄的新功能。

  • 新的環境/系統屬性,可在使用預設編碼解碼器時設定遮罩密碼的「金鑰」。

  • 能夠停用訊息負載平衡,仍然允許重新分配,透過新的 OFF_WITH_REDISTRIBUTION 類型。

  • 現在可以自動清除 MQTT 會話狀態,以避免在用戶端不清除自己的會話時過度累積。

  • lib/client 目錄中發佈完整的 Jakarta Messaging 3.0 用戶端,以及如何在 examples/features/standard/queue-jakarta 中使用它的新範例。

25. 2.18.0

25.1. 重點

25.2. 從 2.17.0 升級

  1. 由於 ARTEMIS-3367核心連接器上的 verifyHost 預設設定已從 false 變更為 true。這表示核心用戶端現在會預期代理程式 SSL 憑證的 CN 或主體替代名稱值與用戶端 URL 中的主機名稱相符

    這會影響所有基於核心的用戶端,包括核心 JMS 用戶端和叢集節點之間的核心連線。雖然這是一個「重大」變更,但執行主機名稱驗證是一種安全性風險(例如,由於中間人攻擊)。預設啟用它會使核心用戶端行為與業界標準對齊。若要處理這個問題,您可以執行下列其中一項操作

    • 更新您的 SSL 憑證以使用與用戶端 URL 中的主機名稱相符的主機名稱。這是關於安全性的建議選項。

    • 更新任何使用 sslEnabled=true 的連接器,也使用 verifyHost=false。使用此選項表示您不會獲得主機名稱驗證的額外安全性,但不需要變更任何憑證。這基本上會還原先前的預設行為。

    有關其他詳細資訊,請參閱 RFC 2818「透過 TLS 的 HTTP」的 3.1 節。

  2. 由於 ARTEMIS-3117,SSL 金鑰儲存區和信任儲存區不再自動重新載入。先前,會針對每個連線建立 javax.net.ssl.SSLContext 的執行個體。這會隱含地提取對任何新連線的金鑰儲存區和信任儲存區的任何變更。但是,這效率極低,因此無法隨著大量連線而良好地擴展。已變更行為,因此只會針對每個 acceptor 建立一個 javax.net.ssl.SSLContext。但是,您仍然可以從磁碟重新載入金鑰儲存區和信任儲存區,而無需重新啟動代理程式。只需在 acceptor 上使用 reload 管理作業即可。這可透過 JMX、Web 主控台、Jolokia 等取得。

    以下是您可以使用 Jolokia 呼叫 artemis acceptor 的 reload 作業的範例 curl 命令

    curl --user admin:admin --header "Content-Type: application/json" --request POST --data '{"type":"exec", "mbean":"org.apache.activemq.artemis:broker=\"0.0.0.0\",component=acceptors,name=\"artemis\"", "operation":"reload"}' https://127.0.0.1:8161/console/jolokia/exec

    當然,您會想要為您的環境調整使用者名稱和密碼,以及代理程式和 acceptor 名稱。

  3. 透過 ARTEMIS-3397,從 Web 主控台中移除了佇列的「速率」度量。這是 2.16.0 中 ARTEMIS-2909 的後續作業(在下方的升級指示中參照)。「速率」度量在從管理 API 中移除後,錯誤地保留在 Web 主控台上可見。

  4. 由於 ARTEMIS-3141ARTEMIS-3128ARTEMIS-3175 的影響,任何傳回訊息資料的「list」或「browse」管理方法(包括透過網頁主控台公開的方法)所傳回的資料,預設都會被截斷。這樣做是為了避免大量訊息資料可能對代理程式穩定性造成負面影響的不利情況。management-message-attribute-size-limit 位址設定控制此行為。如果您希望恢復先前的(且可能危險的)行為,您可以將此值指定為 -1。預設值為 256

26. 2.17.0

26.1. 重點

  • 類似於 ActiveMQ "Classic" 的訊息層級授權

  • 現在可從管理 API 取得位址和佇列的計數。

  • 您現在可以透過管理 API 從磁碟重新載入代理程式的組態,而無需等待定期磁碟掃描來取得。

  • libaio 日誌效能的改進。

  • 傳輸訊息的新命令列選項。

  • 萬用字元位址管理員的效能改進。

  • 現在可以遮蔽 JDBC 資料來源的屬性值。

  • 對 2.16.0 中引入的基於 Hawtio 2 的網頁主控台進行了許多可用性改進

  • 使用基於 JSON 的組態輸入來建立核心橋接器的新管理方法。

  • 適用於 Jakarta EE 8 和 9 的 Jakarta Messaging 2.0 和 3.0 成品.

27. 2.16.0

27.1. 重點

  • 可設定的臨時佇列命名空間

  • AMQP 伺服器連線能力

  • 支援複寫的「基本」SecurityManager 實作

  • 個別 STOMP 用戶端的消費者視窗大小支援

  • 改良的 JDBC 連線管理

  • 基於 Hawtio 2 的新網頁主控台

  • 針對驗證和授權的效能最佳化(例如快取)

  • 在 JCA 資源配接器中支援管理物件,以方便部署到協力廠商 Java EE 應用程式伺服器中

  • 能夠防止 acceptor 自動啟動

27.2. 從 2.15.0 升級

  1. 由於 ARTEMIS-2893,使用者管理的基本實作方式必須變更,以避免與並行修改相關的資料完整性問題。從使用者的角度來看,主要有兩件事發生變化

    1. 當代理程式離線時,不再可以使用 artemis user 命令來進行使用者管理。當然,使用者仍然可以在這種情況下直接修改屬性檔案。

    2. artemis user 命令的參數已變更。不再使用像這樣的命令

      ./artemis user add --user guest --password guest --role admin

      改用這個

      ./artemis user add --user-command-user guest --user-command-password guest --role admin

      簡而言之,使用 user-command-user 來代替 user,使用 user-command-password 來代替 password。現在,userpassword 參數都適用於用於向代理程式傳送命令的連線。

      如需更多詳細資料,請參閱 ARTEMIS-2893ARTEMIS-3010

  2. 由於 ARTEMIS-2909,佇列的管理 API 中已移除「速率」度量。簡而言之,org.apache.activemq.artemis.core.server.Queue#getRate 方法用於偵測慢速消費者,並且僅供內部使用。

    此外,它太不透明,無法讓遠端使用者信任,因為它僅傳回自上次呼叫以來新增到佇列的訊息數。這裡的問題是,呼叫它的使用者不知道上次呼叫的時間。因此,他們可能會取得過去 5 分鐘或過去 5 毫秒新增的訊息速率。這可能會導致不一致和誤導性的結果。

    使用者可以追蹤訊息產生和消耗速率的三種主要方法(按建議順序)

    1. 使用度量外掛程式。這是追蹤代理程式度量最豐富且最靈活的方式,但它需要工具(例如 Prometheus)來儲存度量並顯示它們(例如 Grafana)。

    2. 呼叫 getMessageCount()getMessagesAdded() 管理方法,並儲存傳回的值以及擷取它們的時間。時間序列資料庫是這項工作的絕佳工具。這正是像 Prometheus 這樣的工具所做的。然後,該資料可以與 Grafana 之類的工具一起使用來建立資訊豐富的圖表等。當然,可以跳過所有工具,並根據上次擷取計數的時間進行一些簡單的數學運算來計算速率。

    3. 使用代理程式的訊息計數器。訊息計數器是代理程式提供佇列歷程資訊的簡單方法。它們提供與先前解決方案類似的結果,但彈性較小,因為它們僅在代理程式啟動時追蹤資料,而且沒有任何很好的繪圖選項。

28. 2.15.0

28.1. 重點

  • 能夠針對 security-settings 和 JNDI 查閱使用 FQQN 語法

  • 支援在群組重新平衡期間暫停分派(以避免潛在的無序消耗)

  • Socks5h 支援

29. 2.14.0

29.1. 重點

  • 用於更新 diverts 的管理方法

  • 能夠「停用」佇列,以便訊息不會路由到該佇列

  • 支援 JVM GC 和執行緒度量

  • 支援透過取消設定 broker.xml 中的佇列屬性來重設佇列屬性

  • 透過從 broker.xml 中移除 diverts 來取消部署它們

  • addressMemoryUsagePercentageaddressSize 新增為度量

29.2. 從 2.13.0 升級

這可能是一種罕見的情況,但無論如何都值得在此提及。在 2.14.0 之前,如果您在 broker.xml 中的 queue 上設定參數(例如 max-consumers),然後稍後移除該設定,您設定的已設定值將保留。這在 2.14.0 中透過 ARTEMIS-2797 進行了變更。任何未在 broker.xml 中明確設定的值都將設定回靜態預設值或在地址設定中設定的動態預設值(例如,透過此範例中的 default-max-consumers)。因此,請確保在升級之前,任何現有的佇列都在 broker.xml 值中設定了所有需要的參數。

30. 2.13.0

30.1. 重點

30.2. 從 2.12.0 升級

版本 2.13.0 新增了新的 稽核記錄,該記錄記錄在 INFO 層級,並且可能非常詳細。此新版本隨附的 logging.properties 設定為預設篩除此記錄。如果您的 logging.properties 未適當更新,則此稽核記錄可能會出現在您的主控台和 artemis.log 檔案中,假設您使用的記錄組態接近預設值。將此新增到您的 logging.properties

# to enable audit change the level to INFO
logger.org.apache.activemq.audit.base.level=ERROR
logger.org.apache.activemq.audit.base.handlers=AUDIT_FILE
logger.org.apache.activemq.audit.base.useParentHandlers=false

logger.org.apache.activemq.audit.resource.level=ERROR
logger.org.apache.activemq.audit.resource.handlers=AUDIT_FILE
logger.org.apache.activemq.audit.resource.useParentHandlers=false

logger.org.apache.activemq.audit.message.level=ERROR
logger.org.apache.activemq.audit.message.handlers=AUDIT_FILE
logger.org.apache.activemq.audit.message.useParentHandlers=false

...

#Audit logger
handler.AUDIT_FILE=org.jboss.logmanager.handlers.PeriodicRotatingFileHandler
handler.AUDIT_FILE.level=INFO
handler.AUDIT_FILE.properties=suffix,append,autoFlush,fileName
handler.AUDIT_FILE.suffix=.yyyy-MM-dd
handler.AUDIT_FILE.append=true
handler.AUDIT_FILE.autoFlush=true
handler.AUDIT_FILE.fileName=${artemis.instance}/log/audit.log
handler.AUDIT_FILE.formatter=AUDIT_PATTERN

formatter.AUDIT_PATTERN=org.jboss.logmanager.formatters.PatternFormatter
formatter.AUDIT_PATTERN.properties=pattern
formatter.AUDIT_PATTERN.pattern=%d [AUDIT](%t) %s%E%n

31. 2.12.0

31.1. 重點

  • 支援 SOCKS Proxy

  • AMQP 的真正大型訊息支援

  • 類似於 ActiveMQ 5 個別死信策略的自動建立死信資源

  • 自動建立到期資源

  • 改進的佇列建立 API

  • 允許使用者透過環境變數覆寫 JAVA_ARGS

  • 減少代理程式啟動期間日誌載入期間的堆積使用量

  • 允許停用 STOMP CONNECTED 框架中的 server 標頭

  • 支援將磁碟儲存使用百分比作為可匯出的度量(例如,由 Prometheus 等工具監控)

  • 能夠為內嵌的網頁伺服器組態「自訂器

  • 改善啟動 acceptor 時錯誤的記錄,以便更容易識別有問題的 acceptor

  • CLI 現在會讀取 broker.xml,以尋找需要它的命令(例如 consumerproducer 等)的預設 connector URL。

32. 2.11.0

32.1. 重點

33. 2.10.0

這主要是錯誤修復版本,其中包含影響版本升級的顯著相依性變更。

33.1. 從 2.9.0 升級

由於 WildFly 相依性升級,升級後需要調整代理程式啟動腳本/組態。

33.1.1. 在 *nix 上

bin/artemis 中找到此陳述式

WILDFLY_COMMON="$ARTEMIS_HOME/lib/wildfly-common-1.5.1.Final.jar"

這需要替換為此陳述式

WILDFLY_COMMON="$ARTEMIS_HOME/lib/wildfly-common-1.5.2.Final.jar"

33.1.2. 在 Windows 上

分別在 etc/artemis.profile.cmdbin/artemis-service.xml 中找到 JAVA_ARGS 的這一部分

%ARTEMIS_HOME%\lib\wildfly-common-1.5.1.Final.jar

這需要替換為此陳述式

%ARTEMIS_HOME%\lib\wildfly-common-1.5.2.Final.jar

34. 2.9.0

這是一個輕量級版本。它包含了一些錯誤修正、一些改進和一個主要的新功能。

35. 2.8.1

這主要是錯誤修復版本,其中包含影響版本升級的顯著相依性變更。

35.1. 從 2.8.0 升級

由於 ARTEMIS-2319 上的相依性升級,升級後需要調整代理程式啟動腳本。

35.1.1. 在 *nix 上

bin/artemis 中找到此 if 陳述式

if [ -z "$LOG_MANAGER" ] ; then
 # this is the one found when the server was created
 LOG_MANAGER="$ARTEMIS_HOME/lib/jboss-logmanager-2.0.3.Final.jar"
fi

這需要替換為此區塊

if [ -z "$LOG_MANAGER" ] ; then
 # this is the one found when the server was created
 LOG_MANAGER="$ARTEMIS_HOME/lib/jboss-logmanager-2.1.10.Final.jar"
fi

WILDFLY_COMMON=`ls $ARTEMIS_HOME/lib/wildfly-common*jar 2>/dev/null`
if [ -z "$WILDFLY_COMMON" ] ; then
 # this is the one found when the server was created
 WILDFLY_COMMON="$ARTEMIS_HOME/lib/wildfly-common-1.5.1.Final.jar"
fi

請注意,jboss-logmanager 版本已變更,而且還有一個新的 wildfly-common 程式庫。

在不遠處有這一行

-Xbootclasspath/a:"$LOG_MANAGER" \

這一行應變更為

-Xbootclasspath/a:"$LOG_MANAGER:$WILDFLY_COMMON" \

35.1.2. 在 Windows 上

分別在 etc/artemis.profile.cmdbin/artemis-service.xml 中找到 JAVA_ARGS 的這一部分

-Xbootclasspath/a:%ARTEMIS_HOME%\lib\jboss-logmanager-2.1.10.Final.jar

這需要替換為此陳述式

-Xbootclasspath/a:%ARTEMIS_HOME%\lib\jboss-logmanager-2.1.10.Final.jar;%ARTEMIS_HOME%\lib\wildfly-common-1.5.1.Final.jar

36. 2.8.0

36.1. 重點

37. 2.7.0

37.1. 重點

38. 2.6.4

這主要是一個錯誤修正版本,其中包含一些改進和幾個值得注意的新功能。

38.1. 重點功能

  • 新增了在 producer CLI 命令上設定文字訊息內容的功能。

  • 支援在執行階段重新載入記錄設定。

39. 2.6.3

這主要是一個錯誤修正版本,其中包含一些改進,但沒有實質的新功能。

40. 2.6.2

這是一個錯誤修正版本,沒有實質的新功能或改進。

41. 2.6.1

這是一個錯誤修正版本,沒有實質的新功能或改進。

42. 2.6.0

42.1. 重點功能

43. 2.5.0

43.1. 重點功能

43.2. 從 2.4.0 升級

  1. 由於 ARTEMIS-1644 的變更,任何需要與 HornetQ 和/或 Artemis 1.x 用戶端相容的 acceptor,都需要在 acceptor URL 中具有 anycastPrefix=jms.queue.;multicastPrefix=jms.topic.。當代理程式偵測到這些舊類型的用戶端時,此首碼過去會在幕後自動設定,但這會破壞某些沒有可能解決方案的使用案例。有關更多詳細資訊,請參閱 ARTEMIS-1644

44. 2.4.0

44.1. 重點功能

44.2. 從 2.3.0 升級

  1. 建立 <ARTEMIS_INSTANCE>/etc/management.xml。至少,該檔案必須包含以下內容

    <management-context xmlns="https://activemq.dev.org.tw/schema"/>

    這會設定 JMX 的基於角色的授權。請在管理文件中閱讀更多資訊。

  2. 如果已設定,請從 <ARTEMIS_INSTANCE>/etc/bootstrap.xml 中的 web 元素移除 Jolokia war 檔案。

    <app url="jolokia" war="jolokia.war"/>

    由於 Jolokia REST 介面現在已整合到主控台 Web 應用程式中,因此不再需要此操作。

    如果缺少以下內容,並且您想要部署 Web 主控台,請新增

    <app url="console" war="console.war"/>
    Jolokia REST 介面 URL 現在將位於 http://<host>:<port>/console/jolokia

45. 2.3.0

45.1. 重點功能

45.2. 從 2.2.0 升級

  1. 如果您想要部署 Web 主控台,請將以下內容新增至 <ARTEMIS_INSTANCE>/etc/bootstrap.xml 中的 web 元素

    <app url="console" war="console.war"/>

46. 2.2.0

46.1. 重點功能

2.1.0

46.2. 重點功能

47. 2.0.0

47.1. 重點功能

  • 重大更新,涉及對位址模型的重大重構,帶來以下好處

    • 更簡單且更靈活的 XML 設定。

    • 支援其他訊息傳遞使用案例。

    • 消除令人困惑的 JMS 特定佇列命名慣例(即 "jms.queue." 和 "jms.topic." 首碼)。

  • 訊息的純編碼,因此除非絕對必要,否則 AMQP 等通訊協定不需要將訊息轉換為 "核心" 格式。

  • 用於在某些使用案例中提高效能的"MAPPED" 日誌類型

48. 1.5.6

49. 1.5.5

50. 1.5.4

50.1. 重點功能

  • 支援 Oracle12C 用於 JDBC 持久化。

  • 錯誤修正。

51. 1.5.3

51.1. 重點功能

  • 支援代理程式 XML 設定中的「位元組表示法」(例如 "K"、"KB"、"Gb" 等)。

  • 用於重新計算磁碟同步時間的 CLI 命令。

  • 錯誤修正。

52. 1.5.2

52.1. 重點功能

  • 支援使用 JDBC 進行分頁。

  • 錯誤修正。

53. 1.5.1

53.1. 重點功能

  • 支援 AMQP 的外寄連線。

  • 錯誤修正。

54. 1.5.0

54.1. 重點功能

  • AMQP 效能改進。

  • JUnit 規則實作,因此可以在測試中輕鬆設定代理程式等訊息傳遞資源。

  • 基本 CDI 整合。

  • 預設以雜湊形式儲存使用者的密碼。

55. 1.4.0

55.1. 重點功能

  • 用於磁碟使用量的「全域」限制。

  • 在執行階段偵測並重新載入某些 XML 設定變更。

  • MQTT 攔截器。

  • 支援透過 CLI 新增/刪除佇列。

  • 用於只想查看訊息的用戶端的新「瀏覽」安全性權限。

  • 可選用填入 JMSXUserID。

  • 「雙重驗證」支援,以不同方式驗證基於 SSL 和非基於 SSL 的用戶端。

56. 1.3.0

56.1. 重點功能

  • 更好地支援 OpenWire 功能(例如重新連線、生產者流量控制、最佳化確認)。

  • 執行階段重新載入 SSL 金鑰儲存庫。

  • JDBC 持久化的初始支援。

  • 支援最後值佇列上的排程訊息。

57. 1.2.0

57.1. 重點功能

  • 效能方面的改進

  • OSGi 支援。

  • 支援與所有 5.x JAAS 登入模組等效的功能,包括

    • 屬性檔案

    • LDAP

    • SSL 憑證

    • 「訪客」

58. 1.1.0

58.1. 重點功能

  • MQTT 支援。

  • 這些範例現在以程式方式使用 CLI 建立、啟動、停止等伺服器,反映了生產中使用的真實案例。

  • CLI 改進。有新的工具可以壓縮日誌,並對使用者體驗進行額外改進。

  • 可設定的資源限制。

  • 能夠停用伺服器端訊息負載平衡。

59. 1.0.0

59.1. 重點功能

  • 作為 ActiveMQ Artemis 的捐贈程式碼庫的第一個版本!

  • 許多與 ActiveMQ "Classic" 對等的功能,包括

    • OpenWire 支援

    • AMQP 1.0 支援

    • 基於 URL 的連線

    • 自動建立位址/佇列

    • Jolokia 整合