1、ActiviMq消息隊列,解決了服務解耦合的動作,緩解了服務並發量很大,造成服務器無法處理的狀況。(kafka、rabbitMQ、activiMQ)
其他作用:異步處理、消息通訊、流量消峰、應用解耦
應用場景:
1、用戶註冊的時候,重點內容是將用戶信息保存到數據庫中,發短信驗證或者是發郵件增加了業務的復雜度。這時使用MQ將發短信、發郵件通知MQ由另外的服務平臺完成。
2、搜索平臺、緩存平臺
查詢數據,建立緩存、索引,不從數據庫查詢,從緩存或者索引庫查詢,當數據庫發生增加、修改、刪除操作時發消息給MQ,緩存平臺或者是索引平臺從MQ獲取到這個消息,更新緩存或者索引。
ActiveMQ使用的是標準的生產者(完成生產消息並發送消息)和消費者(獲取消息,完成自己的業務邏輯)模型
有兩種數據結構
Topic(發布訂閱) 壹個生產者對應多個消費者,消息默認不會持久化,需要手動配置持久化。如果A服務器掛了,再生產壹條消息的話,會被B服務器拿去使用,就算重新啟動,A服務器也不會再拿到消息了
商品系統、庫存系統、生成商品詳情頁面的系統,現在要添加壹個商品信息,消息肯定是需要讓庫存系統以及商品信息詳情頁面系統知道的。
Queue(點對點)壹個生產者對應壹個消費者,默認消息持久化
StringMessage
mapMessage
byteMessage
objectMessage
要完成topic模式的消息持久化,需要保證每個消費者有唯壹的clientID(本文來自北大青鳥)