本章提供每個版本的以下資訊
-
完整版本說明連結,其中包含此版本中解決的所有問題。
-
適用時的「重點」簡短清單。
-
如有必要,從先前版本升級時所需的特定步驟。
如果升級跨越多個版本,則需要依序遵循每個版本的步驟。 |
除了此處概述的任何特定於版本的升級指示之外,請遵循升級 Broker章節中概述的一般升級程序。 |
1. 2.38.0
1.1. 重點
-
現在支援 WebSocket 壓縮。當透過 WebSockets 進行通訊時,此壓縮可以透明地用於 AMQP、STOMP 或 MQTT。
-
ActiveMQServerMessagePlugin
現在具有messageMoved()
回呼。 -
核心橋接器組態現在支援
client-id
,這將使識別遠端 Broker 上的橋接連線更加容易。 -
consumer
CLI 命令現在透過為--receive-timeout
指定-1
來支援「永久」使用訊息。 -
驗證與授權快取現在具有詳細的偵錯記錄。
-
Broker 管理已進行了一些更新
-
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,參數
retryIntervalMultiplier
和maxRetryInterval
現在將套用於「初始」連線嘗試(即透過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 用戶端的用例的穩定性。
-
為開發人員提供了許多內部「程式碼整理」改進,以使程式碼庫更簡單、更一致。
5. 2.34.0
5.2. 從 2.33.0 升級
-
由於 ARTEMIS-4712,
LDAPLoginModule
中不再支援透過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 儲存時自動重新載入 -
在鏡像和分頁方面提升效能
-
記錄指標,以降低遺失日誌中
WARN
或ERROR
訊息的風險。 -
大幅改進關於 網路隔離 (又稱裂腦) 的文件
-
可插拔鎖定管理員 (又稱可插拔仲裁投票) 已脫離「實驗性」狀態,可供一般使用
6.2. 從 2.32.0 升級
-
由於 ARTEMIS-4532,與 MQTT 主題和訂閱相關的位址和佇列名稱可能會變更。如果以下兩種情況都為真,則會影響 MQTT 用例
-
此代理程式被設定為使用萬用字元語法,而此語法不符合MQTT 萬用字元語法(例如,預設的萬用字元語法)。
-
您在 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-ri
、artemis-lockmanager-api
和org.apache.activemq.artemis.core.config.ha.DistributedLockManagerConfiguration
。先前這些在文件中被標示為「實驗性」,並且僅在名稱上做了變更,以釐清其概念上的用途。此外,關於高可用性和網路隔離(即腦裂)的文件已被大幅重構,使其更加清晰和全面。
7. 2.32.0
7.1. 重點
-
鏡像 Core 訊息現在可以使用其原生格式傳送,而無需轉換
-
鏡像錯誤修正和改進
-
ActiveMQ Artemis 現在採用了更具包容性的語言定義。
-
範例現在屬於其自己的儲存庫:https://github.com/apache/activemq-artemis-examples/
7.2. 從 2.31.x 升級
-
由於ARTEMIS-4501,當對應的連線階段過期時,MQTT 訂閱佇列將會自動移除,無論是基於 MQTT 5 用戶端傳遞的連線階段過期間隔,或是基於為 MQTT 3.x 用戶端或未明確傳遞連線階段過期間隔的 MQTT 5 用戶端所設定的
defaultMqttSessionExpiryInterval
。在此變更之前,移除訂閱佇列依賴於通用的
auto-delete-*
address-settings
。這些設定現在不再需要。
改為設定
defaultMqttSessionExpiryInterval
。 -
由於ARTEMIS-3474,以下組態元素在它們出現的任何位置(例如,
broker.xml
、bootstrap.xml
等)都已變更,雖然所有先前的組態將在一段時間內仍然被支援-
master
→primary
-
slave
→backup
-
check-for-live-server
→check-for-active-server
-
whitelist
→allowlist
-
blacklist
→denylist
此外,文件中和管理介面中對這些元素的引用也已變更。叢集拓撲資訊(例如,從
listNetworkTopology
返回的資訊)將包含作為主要伺服器的節點的primary
和live
項目。 -
10. 2.31.0
10.1. 重點
-
引入了一個互動式 shell,用於執行 CLI 命令以及Bash 和 ZSH 自動完成支援。
-
新增了一個 CLI 叢集驗證工具,以協助監控代理程式拓撲。透過
check cluster
命令使用。 -
當使用叢集時,
queue stat
命令現在能夠驗證整個叢集拓撲上的訊息計數。 -
新增了對代理程式連線的AMQP 聯合支援。
-
顯著改進了分頁 JDBC 持久性。
-
將大部分的文件從 MarkDown 轉換為 AsciiDoc。有關更多詳細資訊,請參閱ARTEMIS-4383。
-
許多其他錯誤修正和改進。
10.2. 從 2.30.0 升級
-
由於ARTEMIS-4372 和新 Artemis shell 功能的引入,當您調用
./artemis
時,它現在會啟動新的 shell 來瀏覽 CLI 命令,而不是僅吐出help
文字。
12. 2.29.0
12.2. 從 2.28.0 升級
-
由於ARTEMIS-4151,未在
management.xml
的role-access
或allowlist
中定義的 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 共享訂閱都是空的。當訂閱者重新連線時,它們將會獲得一個新的訂閱佇列。如果它們不是空的,您可以透過管理方式將訊息移動到新的訂閱佇列。
15. 2.27.0
15.2. 從 2.26.0 升級
想要日誌記錄的用戶端應用程式現在將需要提供一個適當的 SLF4J 支援的日誌記錄實作,並根據其需求進行適當的設定。有關更多資訊以及使用 Log4J 2 的範例,請參閱用戶端應用程式日誌記錄。
代理程式發行版現在包含並設定 Log4J 2 作為其日誌記錄實作,有關更多詳細資訊,請參閱日誌記錄。如果升級現有的代理程式執行個體而不是建立新的執行個體,則需要對代理程式現有執行個體的 /etc 和 /bin 檔案進行一些設定等更新。
您可以使用從新下載的代理程式中的新升級輔助工具來重新整理現有代理程式執行個體的各種組態檔案和腳本。broker.xml 和資料會保持原樣。
在執行命令之前,您應該備份現有的代理程式執行個體。 |
可以從新下載的代理程式主目錄執行 ./artemis upgrade <path-to-your-instance>
來執行該命令。
在更新檔案的過程中,大多數對舊設定檔和腳本的自訂設定將會遺失。因此,您應該比較舊的設定檔和更新後的設定檔,然後根據需要移植您可能進行的任何遺失的自訂設定。升級命令本身會將它變更的較舊檔案複製到實例目錄中的 同樣地,如果您自訂了舊的 |
另請注意,broker.xml
中的 configuration-file-refresh-period
設定不再涵蓋記錄設定的重新整理。Log4J 2 有自己的設定重新載入處理機制,透過 Log4J 設定檔本身的 monitorInterval
屬性進行設定。建立的預設 <instance>/etc/log4j2.properties
檔案已設定 5 秒的 monitorInterval
值,以與先前的預設代理程式行為對齊。
15.3. 手動更新
或者,您可以不使用上述的升級協助命令,而是依照一般升級程序以及下方的其他步驟來手動執行更新
-
應使用 Log4J 2 設定建立新的
<instance>/etc/log4j2.properties
檔案。「artemis create」CLI 命令使用的檔案可以從以下位置下載:log4j2.properties -
應刪除舊的
<instance>/etc/logging.properties
JBoss Logging 設定檔。 -
需要進行相關的啟動腳本或設定檔清理:自 2.26.0 以來所需的變更差異檔案可在這裡找到(適用於 *nix),或在這裡找到(適用於 Windows)。
16. 2.26.0
16.1. 重點
-
錯誤修正和改進
16.2. 從 2.25.0 升級
-
由於 ARTEMIS-4006,
artemis-jms-client-all
和artemis-jakarta-client-all
用戶端已從二進位發行版本的lib/client
目錄中移除。如果您使用這些程式庫,可以在 Maven Central 找到它們(例如,這裡)。請參閱用戶端類別路徑文件以取得更多資訊。 -
我們已從程式碼庫和文件中移除 REST 介面。如果您仍然需要 REST 介面,您可以存取仍然可用的最新版本。您仍然可以按照先前的文件中的步驟來建置和部署介面。但是,您應該停止使用它,因為它將不再維護。
-
由於 ARTEMIS-3980,Web 內容已從二進位發行版本中移除。我們現在將具有根目標的 Web 要求重新導向至管理主控台。若要在目前的執行個體上啟用此新的重新導向行為,您必須更新
bootstrap.xml
。變更<web path="web">
為
<web path="web" rootRedirectLocation="console">
如果您過去習慣於自訂索引頁面或在
web
資料夾中新增自訂內容,請參閱Web 伺服器文件以取得有關停用重新導向和啟用 Web 內容的更多資訊。
18. 2.24.0
18.1. 重點
-
簡化的頁面快取和檔案只讀取到佇列中,而無需軟快取。
18.2. 從 2.23.0 升級
-
由於 ARTEMIS-3851,使用
CleanSession=1
的 MQTT 3.x 訂閱者所建立的佇列現在是非持久性,而不是持久性。這可能會影響先前僅針對其角色具有createDurableQueue
的 MQTT 用戶端的security-settings
。現在他們也需要createNonDurableQueue
。同樣地,這僅對使用CleanSession=1
的 MQTT 3.x 用戶端有潛在的影響。 -
由於 ARTEMIS-3892,指派給佇列的使用者名稱將基於經過驗證的使用者,而不是僅基於用戶端應用程式提交的使用者名稱。這將影響以下的使用案例
-
當
login.config
設定為GuestLoginModule
時,這會導致某些使用者在驗證過程中被指派特定的使用者名稱和角色。 -
當
login.config
設定為CertificateLoginModule
時,這會導致使用者被指派與其 SSL 憑證的主體 DN 對應的使用者名稱和角色。
在這些情況下,代理程式會將此指派的(即經過驗證的)使用者名稱用於任何使用連線建立的佇列。過去,佇列的使用者名稱會留空白。
-
19. 2.23.1
19.1. 重點
-
ARTEMIS-3856 - 無法將通道狀態變更為 ReadyForWriting:java.util.ConcurrentModificationException
20. 2.23.0
22. 2.21.0
22.1. 重點
-
現在支援MQTT 5。
-
現在有一組新的效能工具可供使用,以評估 Artemis 的輸送量和負載下的回應效能
-
Divert 現在支援多個位址
-
現在,執行階段設定重新載入支援橋接。
-
現在可以透過訊息計數設定分頁。
22.2. 從 2.20.0 升級
-
由於 XML 結構描述變更以修正不精確的網域名稱,因此需要更新 2 個檔案
-
etc/bootstrap.xml
-
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">
-
-
如果您使用JDBC 持久性,則由於 ARTEMIS-3679 中的變更,您需要更新資料庫。
NODE_MANAGER_STORE
上的HOLDER_EXPIRATION_TIME
資料行從TIMESTAMP
變更為BIGINT
(或 Oracle 上的NUMBER(19)
)。您必須停止任何正在存取該表格的代理程式,並捨棄它或針對您的資料庫執行適當的ALTER TABLE
陳述式。如果您捨棄表格,則代理程式重新啟動時會自動重新建立表格,並重新填入新的自動產生節點 ID。 -
如果您使用 JGroups,則由於 ARTEMIS-2413 中的變更,JGroups 從 3.x 更新為 5.x,因此您需要更新 JGroups 設定。許多協定已變更,而且沒有自動化工具可讓舊設定保持在最新狀態,因此請參閱 JGroups 文件以取得有關新設定的更多詳細資訊。您可以在JGroups 儲存庫中找到範例設定(例如,
tcp.xml
和udp.xml
)。
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. 重點
-
雙鏡像支援,改善 AMQP 鏡像災難復原的功能
-
核心橋接的並行設定。
-
XPath 篩選運算式(與 ActiveMQ「Classic」的同等功能)。
25.2. 從 2.17.0 升級
-
由於 ARTEMIS-3367,核心連接器上的
verifyHost
預設設定已從false
變更為true
。這表示核心用戶端現在會預期代理程式 SSL 憑證的CN
或主體替代名稱值與用戶端 URL 中的主機名稱相符。這會影響所有基於核心的用戶端,包括核心 JMS 用戶端和叢集節點之間的核心連線。雖然這是一個「重大」變更,但不執行主機名稱驗證是一種安全性風險(例如,由於中間人攻擊)。預設啟用它會使核心用戶端行為與業界標準對齊。若要處理這個問題,您可以執行下列其中一項操作
-
更新您的 SSL 憑證以使用與用戶端 URL 中的主機名稱相符的主機名稱。這是關於安全性的建議選項。
-
更新任何使用
sslEnabled=true
的連接器,也使用verifyHost=false
。使用此選項表示您不會獲得主機名稱驗證的額外安全性,但不需要變更任何憑證。這基本上會還原先前的預設行為。
有關其他詳細資訊,請參閱 RFC 2818「透過 TLS 的 HTTP」的 3.1 節。
-
-
由於 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 名稱。
-
透過 ARTEMIS-3397,從 Web 主控台中移除了佇列的「速率」度量。這是 2.16.0 中 ARTEMIS-2909 的後續作業(在下方的升級指示中參照)。「速率」度量在從管理 API 中移除後,錯誤地保留在 Web 主控台上可見。
-
由於 ARTEMIS-3141、ARTEMIS-3128 及 ARTEMIS-3175 的影響,任何傳回訊息資料的「list」或「browse」管理方法(包括透過網頁主控台公開的方法)所傳回的資料,預設都會被截斷。這樣做是為了避免大量訊息資料可能對代理程式穩定性造成負面影響的不利情況。
management-message-attribute-size-limit
位址設定控制此行為。如果您希望恢復先前的(且可能危險的)行為,您可以將此值指定為-1
。預設值為256
。
26. 2.17.0
27. 2.16.0
27.1. 重點
-
可設定的臨時佇列命名空間
-
支援複寫的「基本」
SecurityManager
實作 -
個別 STOMP 用戶端的消費者視窗大小支援
-
改良的 JDBC 連線管理
-
基於 Hawtio 2 的新網頁主控台
-
針對驗證和授權的效能最佳化(例如快取)
-
在 JCA 資源配接器中支援管理物件,以方便部署到協力廠商 Java EE 應用程式伺服器中
-
能夠防止 acceptor 自動啟動
27.2. 從 2.15.0 升級
-
由於 ARTEMIS-2893,使用者管理的基本實作方式必須變更,以避免與並行修改相關的資料完整性問題。從使用者的角度來看,主要有兩件事發生變化
-
當代理程式離線時,不再可以使用
artemis user
命令來進行使用者管理。當然,使用者仍然可以在這種情況下直接修改屬性檔案。 -
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
。現在,user
和password
參數都適用於用於向代理程式傳送命令的連線。如需更多詳細資料,請參閱 ARTEMIS-2893 和 ARTEMIS-3010
-
-
由於 ARTEMIS-2909,佇列的管理 API 中已移除「速率」度量。簡而言之,
org.apache.activemq.artemis.core.server.Queue#getRate
方法用於偵測慢速消費者,並且僅供內部使用。此外,它太不透明,無法讓遠端使用者信任,因為它僅傳回自上次呼叫以來新增到佇列的訊息數。這裡的問題是,呼叫它的使用者不知道上次呼叫的時間。因此,他們可能會取得過去 5 分鐘或過去 5 毫秒新增的訊息速率。這可能會導致不一致和誤導性的結果。
使用者可以追蹤訊息產生和消耗速率的三種主要方法(按建議順序)
-
使用度量外掛程式。這是追蹤代理程式度量最豐富且最靈活的方式,但它需要工具(例如 Prometheus)來儲存度量並顯示它們(例如 Grafana)。
-
呼叫
getMessageCount()
和getMessagesAdded()
管理方法,並儲存傳回的值以及擷取它們的時間。時間序列資料庫是這項工作的絕佳工具。這正是像 Prometheus 這樣的工具所做的。然後,該資料可以與 Grafana 之類的工具一起使用來建立資訊豐富的圖表等。當然,可以跳過所有工具,並根據上次擷取計數的時間進行一些簡單的數學運算來計算速率。 -
使用代理程式的訊息計數器。訊息計數器是代理程式提供佇列歷程資訊的簡單方法。它們提供與先前解決方案類似的結果,但彈性較小,因為它們僅在代理程式啟動時追蹤資料,而且沒有任何很好的繪圖選項。
-
29. 2.14.0
29.1. 重點
-
用於更新 diverts 的管理方法
-
能夠「停用」佇列,以便訊息不會路由到該佇列
-
支援 JVM GC 和執行緒度量
-
支援透過取消設定
broker.xml
中的佇列屬性來重設佇列屬性 -
透過從
broker.xml
中移除 diverts 來取消部署它們 -
將
addressMemoryUsagePercentage
和addressSize
新增為度量
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. 重點
-
用於檢查快取大小和清除快取的位址重複 ID 快取的管理方法
-
支援 最小/最大到期延遲
-
用於檢查代理程式健全狀況的命令列
check
工具 -
支援透過
enable-metrics
位址設定停用每個位址的度量 -
改進稽核記錄
-
速度最佳化用於儲存位址和安全性設定的內部物件
HierarchicalObjectRepository
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
,以尋找需要它的命令(例如consumer
、producer
等)的預設connector
URL。
32. 2.11.0
32.1. 重點
-
支援回溯位址。
-
使安全性管理員可以透過 XML 組態。
-
支援可插入的 SSL TrustManagerFactory。
-
新增同盟佇列/位址的外掛程式支援。
-
在 LDAPLoginModule 中支援
com.sun.jndi.ldap.read.timeout
。
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.cmd
和 bin/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
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.cmd
和 bin/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. 重點
-
支援 ActiveMQ5 功能 JMSXGroupFirstForConsumer。
-
使用遠端位址闡明交握逾時錯誤。
-
支援與核心相同的 AMQP 訊息的重複偵測。
37. 2.7.0
37.1. 重點
-
支援來自 5.x 的進階目的地選項,例如
consumersBeforeDispatchStarts
和timeBeforeDispatchStarts
。 -
新增支援透過
auto-delete-queues-delay
和auto-delete-addresses-delay
位址設定,延遲刪除位址和佇列的功能。 -
支援 記錄 HTTP 存取。
-
新增一個 CLI 命令來清除佇列。
-
支援透過管理介面操作 PropertiesLoginModule 的使用者和角色。
-
稽核記錄.
-
實作消費者優先權。
-
支援生產者的 FQQN。
-
追蹤傳送到位址的已路由和未路由訊息。
-
支援透過
default-consumer-window-size
位址設定設定預設的消費者視窗大小。 -
支援在 management.xml 中遮蔽
key-store-password
和trust-store-password
。 -
支援來自 5.x 的
JMSXGroupSeq
-1 來關閉/重設訊息群組。 -
允許設定 RMI 註冊埠。
-
支援在核心橋接器上設定路由類型。
-
將 artemis-native 作為自己的專案移動,如 activemq-artemis-native。
-
支援 聯合佇列和位址。
38. 2.6.4
這主要是一個錯誤修正版本,其中包含一些改進和幾個值得注意的新功能。
38.1. 重點功能
-
新增了在
producer
CLI 命令上設定文字訊息內容的功能。 -
支援在執行階段重新載入記錄設定。
42. 2.6.0
42.1. 重點功能
-
支援 AMQP 用戶端的
SASL_EXTERNAL
。
43. 2.5.0
43.1. 重點功能
-
等效於 ActiveMQ "Classic" 的虛擬主題命名能力。
-
SSL 憑證撤銷清單。
-
支援 OpenWire 的最後值佇列。
-
支援在 bootstrap.xm 和 login.config 中使用遮罩密碼。
-
可設定的代理程式外掛程式實作,用於記錄各種代理程式事件(即
LoggingActiveMQServerPlugin
)。 -
可選用透過
sslProvider
URL 參數,對 Netty 使用 OpenSSL 提供者。 -
增強佇列的訊息計數和大小指標。
43.2. 從 2.4.0 升級
-
由於 ARTEMIS-1644 的變更,任何需要與 HornetQ 和/或 Artemis 1.x 用戶端相容的
acceptor
,都需要在acceptor
URL 中具有anycastPrefix=jms.queue.;multicastPrefix=jms.topic.
。當代理程式偵測到這些舊類型的用戶端時,此首碼過去會在幕後自動設定,但這會破壞某些沒有可能解決方案的使用案例。有關更多詳細資訊,請參閱 ARTEMIS-1644。
44. 2.4.0
44.1. 重點功能
-
透過 XML 進行 JMX 設定,而不是必須透過命令列或啟動腳本使用系統屬性。
-
能夠使用 JDBC 持久化設定 HA。
44.2. 從 2.3.0 升級
-
建立
<ARTEMIS_INSTANCE>/etc/management.xml
。至少,該檔案必須包含以下內容<management-context xmlns="https://activemq.dev.org.tw/schema"/>
這會設定 JMX 的基於角色的授權。請在管理文件中閱讀更多資訊。
-
如果已設定,請從
<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. 重點功能
-
代理程式上的重要分析和死鎖偵測
-
支援 Mac 上的 Netty 原生 kqueue。
-
適用於 AMQP 的最後值佇列
45.2. 從 2.2.0 升級
-
如果您想要部署 Web 主控台,請將以下內容新增至
<ARTEMIS_INSTANCE>/etc/bootstrap.xml
中的web
元素<app url="console" war="console.war"/>
46. 2.2.0
46.1. 重點功能
-
使用 STOMP 通訊協定的排程訊息。
-
支援 JNDIReferenceFactory 和 JNDIStorable。
-
能夠在 broker.xml 變更時刪除佇列和位址。
2.1.0
46.2. 重點功能
-
支援 Linux 上的 Netty 原生 epoll。
-
能夠設定任意安全性角色映射。
-
AMQP 效能改進。
47. 2.0.0
47.1. 重點功能
-
重大更新,涉及對位址模型的重大重構,帶來以下好處
-
更簡單且更靈活的 XML 設定。
-
支援其他訊息傳遞使用案例。
-
消除令人困惑的 JMS 特定佇列命名慣例(即 "jms.queue." 和 "jms.topic." 首碼)。
-
-
訊息的純編碼,因此除非絕對必要,否則 AMQP 等通訊協定不需要將訊息轉換為 "核心" 格式。
-
用於在某些使用案例中提高效能的"MAPPED" 日誌類型。
48. 1.5.6
48.1. 重點功能
-
錯誤修正。
49. 1.5.5
49.1. 重點功能
-
錯誤修正。
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 整合
-