一、mq常用四大種類
activemq,rabbitmq,kafka,rocketmq
二、不同mq的特點
效能效率對比kafka>rocketmq>rabbitmq>activemq
三、rabbitmq特點
採用amqp協議(網路傳輸協議)
工作原理:
rabbitmq虛擬主機可以根據不同使用者繫結不同虛擬主機-以達到角色分配效果
工作模式
1、簡單模式(一對一)
生產者生產訊息->直接入佇列
消費者監聽訊息->從佇列中消費訊息
//通道繫結對應的訊息佇列
//queue 佇列名稱
//durable 是否持久化
//exckusive 是否獨佔佇列
//autodelete 是否在消費完成後自動刪除
//arguments 額外附加引數
channel.queuedeclare("hello",true,false,false,null);
//發布訊息
//引數一 交換機名稱,引數二 佇列名稱,引數三 傳遞訊息的額外設定, 引數四 訊息內容
channel.basicpublish("","hello", messageproperties.persistent_text_plain,"hello rabbitmq".getbytes());
2、工作佇列 work queues
多個消費者消費同乙個佇列訊息(不重複消費訊息)
特點:訊息平均分配
設定手動確認與消費數量,保證能者多勞
3、廣播fanout
訊息傳送流程
每個消費者有自己的佇列
每個佇列都需要繫結到交換機
生產者只能將訊息傳送給交換機
交換機決定將訊息傳送給繫結的消費者
乙個訊息可以被多個消費者消費
4、routing路由
direct(直連):訊息只會被固定路由key接收消費
生產者的通道-繫結交換機(也可指定佇列)-傳送訊息指定路由key
消費者的通道-(交換機-佇列-路由key)消費訊息
topic訂閱模式(routingkey )
萬用字元「*」:只匹配乙個;「#」可以匹配任意多個
四、rabbitmq的特點
流量削峰,非同步,負載均衡,解耦,同步可以改為序列執行,訊息持久化
五、rabbitmq使用場景
非同步任務、定時任務、流量削峰、順序消費
六、如何確保訊息被真實消費
訊息事務模式(效能消耗明顯)
消費者訊息確認模式 confirm-設定非自動確認-當消費方真實消費後-伺服器才會刪除那條非持久化訊息
生產者訊息確認模式(非同步確認)——生產者設定通道確認模式——生產者生成該通道上的訊息會指派唯一id——broker會確認收到該資訊
七、如何確保訊息不會重複消費
保證訊息的冪等性:設定訊息唯一主鍵,配合redis或者db使用
八、如何保證訊息的順序性
乙個佇列的訊息只由乙個消費者消費,消費者內部可以做任務佇列分配給不同的work處理
MQ(訊息佇列)系列學習 MQ基礎認識
1.2 通訊模式 1.3 常用場景 主要能解決什麼問題 1.4 mq優劣勢比較 這是乙個mq的系列文章,主要由mq的基礎認識到深入了解,和針對不同業務對mq的技術選型問題。通過文章了解不同mq的各種區別,和使用mq會存在的一些問題。入門篇 mq 訊息佇列 系列學習 mq基礎認識 基礎篇 mq 訊息佇...
c linux IPC 訊息列隊MQ 學習
概念 訊息佇列就是乙個訊息的鍊錶。可以把訊息看作乙個記錄,具有特定的格式以及特定的優先順序。對訊息佇列有寫許可權的程序 可以向其中按照一定的規則新增新訊息 對訊息佇列有讀許可權的程序則可以從訊息佇列中讀走訊息。訊息佇列是乙個存放在核心中的訊息鍊錶,每個訊息佇列由訊息佇列識別符號標識。與管道不同的是訊...
學習MQ(三) 乙個例項
學習mq 三 乙個例項。現在有兩台機器a和b,分別安裝了mq6.0,我要通過mq進行a和b之間的雙向通訊。我打算分兩步,第一步 實現a到b的資料傳輸。在a上 1 建立佇列管理器 qm 1001。2 建立本地佇列 lq 1001 3 建立傳輸佇列 xq 1001 4 建立遠端佇列 rq 1002 5 ...