ActiveMQ的訊息儲存方式

2021-09-08 12:28:17 字數 1463 閱讀 6275

1. 佇列儲存

採取先進先出模式,同一時間,訊息只會傳送給某乙個消費者,只有當該訊息被消費並告知已收到時,它才能在**的儲存中被刪除。

對於永續性訂閱來說,每乙個消費者都會獲取訊息的拷貝。為了節約空間,**的儲存介質中只儲存了乙份訊息,儲存介質的持久訂閱物件為其以後的被儲存的訊息維護了乙個指標,消費者消費時,從儲存介質中複製乙個訊息。訊息被所有訂閱者獲取後才能刪除。

2. kahadb訊息儲存

從activemq5.3後,推薦使用kahadb儲存普通用途的訊息。kahadb是一種基於檔案的訊息儲存機制,為了提高訊息儲存的可靠性和可恢復性,它整合了乙個事務日誌。kahadb擁有高效能和可擴充套件性等特點。由於kahadb使用的是基於檔案的儲存,所以不需要使用第三方資料庫。

kahadb訊息儲存機制為所有目的地使用乙個索引,其索引使用乙個事務日誌。

kahadb被使用在10000個活動連線的產品環境,每個連線都擁有乙個分割的佇列。

kahadb可以通過配置或硬**實現,以下是配置方式:

以下是硬**方式:

kahadb儲存方式是所有儲存方式中最快捷的乙個。

下表是kahadb的配置選項:

3. amq訊息儲存

amq訊息儲存與kahadb訊息儲存類似,由乙個提供可靠持續性的事務日誌以及高效索引組成,當乙個應用中,訊息吞吐量是主要需求時,amq是最好的選擇。但由於它為每個索引使用了兩個分隔檔案,而每個目的地都有乙個索引,所以它不能被使用於每個**擁有成百上千個佇列的情況。activemq**沒有被完全關閉時,索引的覆蓋也會很慢。這是因為所有的索引都需要被重建。

amq訊息儲存的配置如下所示:

下表是amq儲存的配置選項:

4. jdbc訊息儲存

配置方式:

5. 記憶體訊息儲存

配置方式:

或者:

ActiveMQ 訊息儲存

理解 activemq 儲存訊息的儲存機制的基本知識是非常重要的。佇列和主題中的訊息儲存是不同的,因為有些可以在主題上優化的地方並不適合佇列。佇列儲存訊息是非常直接的 即最基本的先進先出 fifo 主題儲存訊息是有點複雜的,它為每乙個消費者維持乙個指向訊息佇列的指標。自從 5.3 版本之後,acti...

Activemq 訊息的儲存和持久化

activemq 的訊息儲存持久化 什麼是可持久化 為了避免意外宕機丟失資訊,需要做到重啟後可以恢復訊息佇列。訊息系統一般都會採用持久化機制。activemq 的訊息持久化機制有 jdbc amq kahadb 和 leveldb 無論使用哪種持久化方式,訊息的儲存邏輯是一致的。就是傳送者訊息傳送後...

activemq的高階特性 訊息儲存持久化

activemq的高階特性之訊息儲存持久化 有基於檔案的,資料庫的,記憶體的。預設的是基於檔案的,在安裝目錄 data kahadb。在conf activemq.xml檔案中。把儲存持久化換成mysql的資料庫。1 修改配置檔案 在標籤後面新增 relaxautocommit true useun...