【activemq artemis】消息持久化——文件系統以及jdbc

 

說明文檔主要翻譯自官方文檔,關鍵環境的配置我加入一些描述和截圖,整體配置還是挺順利。

 

警告: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://qpyun2018.mysql.rds.aliyuncs.com:3306/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毫秒。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章