MQ學習筆記

2021-10-19 18:15:32 字數 1739 閱讀 4597

一、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 ...