ActiveMQ中的訊息永續性

2021-04-12 18:52:09 字數 1140 閱讀 8459

訊息永續性的原理很簡單,就是在傳送者將訊息傳送出去後,訊息中心首先將訊息儲存到本地資料檔案、記憶體資料庫或者遠端資料庫等,然後試圖將訊息傳送給接收者,傳送成功則將訊息從儲存中刪除,失敗則繼續嘗試。訊息中心啟動以後首先要檢查制定的儲存位置,如果有未傳送成功的訊息,則需要把訊息傳送出去。  

對於activemq,訊息的持久化同樣是很簡單的,僅僅通過配置資訊就可以實現。這裡主要介紹兩種不同的持久化方法。

high performance journal

這是activemq基於開源的howl(high-speed objectweb logger),將howl擴充套件為可以儲存任意大小的訊息(howl只能儲存固定大小的記錄),實現的一種訊息持久化方法。它可以快速的將訊息儲存在本地檔案中,且這種檔案是以一種類似資料庫的方式管理的。這樣,如果你傳送了10,000個訊息,可能只有很少數的訊息沒有傳送成功,當達到乙個 checkpoint的時候,journal將一批未成功訊息通過jdbc儲存到資料庫,這樣避免了多次的資料庫操作,很大程度上提高了效能並且保證了可靠性。  

配置方法非常簡單,就是無需配置,呵呵。activemq預設支援journal,在activemq.xml配置檔案中,可以找到如下資訊:

code:

[ctrl+a select all]

這裡可以改動的就是journallogfiles,這個屬性是制定預設建立幾個資料檔案來儲存訊息。journallogfilesize為資料檔案大小,預設為20mb。datadirectory指向了儲存資料檔案的位置。

使用mysql進行訊息持久化  

activemq持久幾乎所有資料庫(因為是通過jdbc把訊息儲存到資料庫的)。方法同樣簡單,就是配置資訊稍微有點變化。

code:

[ctrl+a select all]

其中datasource指定了所用資料來源的名字為mysql-ds。需要在activemq.xml檔案中的

標籤之外配置資料來源。下面是mysql的配置資訊。

code:

[ctrl+a select all]

[ctrl+a select all]

這樣,你的訊息無論怎麼發,都可以成功了。

Activemq訊息持久化

官方文件 activemq持久化相關配置 usr local apache activemq 5.11.1 conf activemq.xml 官方預設的持久化為kahadb 可以稍作調優 indexwritebatchsize 1000 journalmaxfilelength 32mb enab...

ActiveMQ 訊息持久化

可持久化機制 兩種機制 用一句話簡單明瞭來說,就是將mq中的資料儲存乙份,資料被傳送,則將儲存的資料刪除,如果沒有傳送成功則重新傳送。先不說具體的實現,整體的思路是這樣的,如果mq是一台伺服器,我們最好做到物理上的備份,這樣在機器出問題的時候,我們能夠恢復資料。一般將資料儲存到第三方雲上。或者說另外...

Activemq訊息持久化

官方文件 activemq持久化相關配置 usr local apache activemq 5.11.1 conf activemq.xml 官方預設的持久化為kahadb 可以稍作調優 indexwritebatchsize 1000 journalmaxfilelength 32mb enab...