說明文檔主要翻譯自官方文檔,關鍵環境的配置我加入一些描述和截圖,整體配置還是挺順利。
警告:Apache ActiveMQ Artemis JDBC持久性存儲正在開發中,包含在其中用於評估。
Apache ActiveMQ Artemis JDBC 持久層提供了使用數據庫存儲代理狀態(消息、地址和其他應用程序狀態)的能力。
N、 B.JDBC持久層當前不支持地址完整策略分頁(請參閱:關於分頁的部分)。
文件日志是 ActiveMQ Artemis 推薦使用的配置,因為它提供了更高的性能,並且更加成熟。JDBC持久層的目標是那些必須使用數據庫的用戶,例如由於公司內部策略的原因。
ActiveMQ Artemis目前支持的數據庫供應商數量有限(較舊的版本可以工作,但里程數可能有所不同):
PostgreSQL 9.4.x版
MySQL 5.7.x版本
ApacheDerby10.11.1.1版
JDBC存儲使用JDBC連接將消息和綁定數據存儲在數據庫表中的記錄中。存儲在數據庫表中的數據使用Apache ActiveMQ Artemis內部編碼進行編碼
jdbc 依賴得 添加運行時依賴項
添加運行時依賴項
運行時依賴項(如轉移、轉換器、代理插件、JDBC驅動程序、密碼解碼器等)必須在運行時由代理訪問。將依賴項打包到jar中,並將其放在代理的類路徑上。
這可以通過將jar文件放在代理發行版本身的lib目錄或代理實例的lib目錄中來完成。
默認情況下,代理實例沒有lib目錄,因此可能需要創建它。它應該與bin、data、log等目錄放在“頂層”。
在與bin同級的目錄里放入mysql驅動器
配置JDBC持久性
要將Apache ActiveMQ Artemis配置為使用數據庫來保存消息和綁定數據,必須執行兩件事。
請參閱有關添加運行時依賴項的文檔,以了解如何使JDBC驅動程序對代理可用。
在broker.xml文件<core>元素下的配置文件。例如:
<store> <database-store> <jdbc-connection-url>jdbc:mysql://xxxx/monitodb?relaxAutoCommit=true</jdbc-connection-url> <jdbc-user>用戶名</jdbc-user> <jdbc-password>密碼</jdbc-password> <bindings-table-name>atmq_bind</bindings-table-name> <message-table-name>atmq_msg</message-table-name> <page-store-table-name>atmq_page</page-store-table-name> <large-message-table-name>atmq_large_msg</large-message-table-name> <node-manager-store-table-name>atmq_node_manager</node-manager-store-table-name> <jdbc-driver-class-name>com.mysql.jdbc.Driver</jdbc-driver-class-name> </database-store> </store>
jdbc-connection-url
數據庫服務器的完整JDBC連接URL。連接url應該包含所有配置參數和數據庫名稱。注意:使用XML配置文件配置服務器時,請確保轉義任何非法字符;例如,“&”在JDBC連接url中是典型的,應轉義為“&”。
bindings-table-name
將為ActiveMQ Artemis服務器保留綁定數據的表的名稱。指定表名允許用戶在多個服務器之間共享單個數據庫,而不受干擾。
message-table-name
將為ActiveMQ Artemis服務器保留綁定數據的表的名稱。指定表名允許用戶在多個服務器之間共享單個數據庫,而不受干擾。
large-message-table-name
將為ActiveMQ Artemis服務器保留消息和相關數據的表的名稱。指定表名允許用戶在多個服務器之間共享單個數據庫,而不受干擾。
page-store-table-name
存放頁面存儲目錄信息的表的名稱。請注意,每個地址都有自己的頁表,該頁表將使用此名稱並附加一個最多20個字符的唯一id。
node-manager-store-table-name
將為ActiveMQ Artemis服務器保留HA共享存儲鎖定(即實時和備份)和HA相關數據的表的名稱。指定表名允許用戶在多個服務器之間共享單個數據庫,而不受干擾。每個共享存儲區實時/備份對必須使用相同的表名,並且不支持在多個(和不相關的)實時/備份對之間共享同一個表。
jdbc-driver-class-name
所需數據庫驅動程序的完全限定類名。
jdbc-network-timeout
JDBC網絡連接超時(毫秒)。默認值為20000毫秒(即20秒)。使用共享存儲時,建議將其設置為小於或等於jdbc鎖過期時間。
jdbc-lock-renew-period
JDBC鎖的保持活動服務的周期(毫秒)。默認值為2000毫秒(即2秒)。
jdbc-lock-expiration
以毫秒為單位的JDBC鎖被認為在不保持其活動狀態下有效。默認值為20000毫秒(即20秒)。
jdbc-journal-sync-period
日志將與JDBC同步的時間(毫秒)。默認值為5毫秒。