訊息佇列 (Message Queue)

2022-03-29 21:42:58 字數 1687 閱讀 9566

1.訊息持久化:

持久化訊息主要是指:mq down或者mq所在的伺服器down了,訊息不會丟失的機制。zeromq不支援,activemq和rabbitmq都支援

2.整體比較:(可靠性、靈活的路由、集群、事務、高可用的佇列、訊息排序、問題追蹤、視覺化管理工具、外掛程式系統、社群)

rabbitmq最好,activemq次之,zeromq最差。當然zeromq也可以做到,不過自己必須手動寫**實現,**量不小。尤其是可靠性中的:永續性、投遞確認、發布者證實和高可用性。

tps (系統吞吐量)

zeromq:延遲最低低,rabbitmq支援高併發最好

由瑞典電信裝置製造商愛立信公司開發。erlang問世於2023年,經過十年的發展,於2023年發布開源版本。erlang是執行於虛擬機器的解釋性語言,目的是創造一種可以應對大規模併發活動的程式語言和執行環境

乙個提供統一訊息服務的應用層標準高階訊息佇列協議,是應用層協議的乙個開放標準,為面向訊息的中介軟體設計。基於此協議的客戶端與訊息中介軟體可傳遞訊息,並不受客戶端/中介軟體不同產品,不同的開發語言等條件的限制

概念說明:

exchange:訊息交換機,它指定訊息按什麼規則,路由到哪個佇列。

queue:訊息佇列載體,每個訊息都會被投入到乙個或多個佇列。

binding:繫結,它的作用就是把exchange和queue按照路由規則繫結起來。

routing key:路由關鍵字,exchange根據這個關鍵字進行訊息投遞。

vhost:虛擬主機,乙個broker裡可以開設多個vhost,用作不同使用者的許可權分離。

producer:訊息生產者,就是投遞訊息的程式。

consumer:訊息消費者,就是接受訊息的程式。

channel:訊息通道,在客戶端的每個連線裡,可建立多個channel,每個channel代表乙個會話任務。

訊息佇列的使用過程大概如下:

1. 客戶端連線到訊息佇列伺服器,開啟乙個channel。

2. 客戶端宣告乙個exchange,並設定相關屬性。

3. 客戶端宣告乙個queue,並設定相關屬性。

4. 客戶端使用routing key,在exchange和queue之間建立好繫結關係。

5. 客戶端投遞訊息到exchange。

伺服器安裝rabbitmq

apt-get install rabbitmq-server
配置rabbitmq 賬戶

#建立乙個admin使用者

1.sudo rabbitmqctl add_user admin 123123

#設定該使用者為administrator角色

2.sudo rabbitmqctl set_user_tags admin administrator

#設定許可權

3.sudo rabbitmqctl set_permissions -p '/' admin '.' '.' '.'

#重啟rabbitmq服務

4.sudo service rabbitmq-server restart

訊息佇列 訊息佇列

輪詢排程 一次性分發所有訊息,保證訊息平均分配,不管消費者是否能正常消費 訊息應答 保證消費端能確實消費,不丟失 公平 乙個乙個分發所有訊息,在保證分發到的執行緒確認回覆後,才分發下個訊息給下個空閒的消費者,訊息持久化 保證佇列中的訊息不丟失,包括3要素 交換器 訊息佇列 訊息都必須宣告持久化 發布...

訊息佇列 訊息佇列 kafka

kafka是乙個分布式的基於發布 訂閱模式的訊息佇列,主要用於大資料實時處理領域。要理解kafka首先要有分布式的概念,要有訊息佇列的概念。分布式系統最大的優勢就是解耦和削峰,這種情況下,a系統生成了乙個訊息,b系統非同步獲取,那麼就需要乙個存放訊息的訊息佇列 mq 相比較傳統的訊息佇列,訊息被消費...

linux訊息佇列 Linux訊息佇列

訊息佇列,unix的通訊機制之一,可以理解為是乙個存放訊息 資料 容器。將訊息寫入訊息佇列,然後再從訊息佇列中取訊息,一般來說是先進先出的順序。可以解決兩個程序的讀寫速度不同 處理資料速度不同 系統耦合等問題,而且訊息佇列裡的訊息哪怕程序崩潰了也不會消失。最簡單的訊息記憶體的使用流程 ftok函式生...