日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ActiveMQ(为什么要使用消息中间件,JMS传输模型)

發布時間:2025/4/16 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ActiveMQ(为什么要使用消息中间件,JMS传输模型) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么要使用消息中間件:

?? 同步請求:當客戶端向服務器發送一條請求的時候,此時服務器由于網絡,或者處理一些比較大的數據的時候,可能有延遲,客戶端 會處于一直等待的狀態。只有等待服務器返回處理結果,或者請求超時,客戶端才能繼續執行

?

因此可以看出同步請求一些場景上面使用有些弊端:客戶與服務器對象的生命周期緊密耦合,客戶進程和服務對象進程都都必須正常運行;如果由于服務對象崩潰或者網絡故障導致用戶的請求不可達,客戶會受到異常

? 在實際項目中有項目 A 它產生了 一系列的數據,需要將該數據存放到數據庫,但是如果由A 項目 直接 存放到數據庫,可能導致A項目執行變慢,所以想將A 項目產生的數據,交由 B 項目? 然后由B 項目提交到數據庫,B 提交數據庫的時候,不管B 執行的時間或者成功失敗,不影響A 的運行

實現這種情況,可以使用消息中間件。

什么是消息中間件:

消息中間件利用高效可靠的消息傳遞機制進行平臺無關的數據交流,并基于數據通信來進行分布式系統的集成。通過提供消息傳遞和消息排隊模型,它可以在分布式環境下擴展進程間的通信。例如:A項目將數據發送給消息服務器,消息服務器將消息存放到隊列之中,在合適的時候,消息服務器將消息發送給B 項目

這種模式下,發送和接收是異步的,發送者無需等待;?二者的生命周期未必相同:?發送消息的時候接收者不一定運行,接收消息的時候發送者也不一定運行;

?

什么是JMS

?既然學習消息中間件,用的又是java,所以有必要知道JMS 是什么:JMS即Java消息服務(Java Message Service)應用程序接口,是一個Java平臺中關于面向消息中間件(MOM)的API,用于在兩個應用程序之間,或分布式系統中發送消息,進行異步通信。可以理解成:JMS是java的消息服務,JMS的客戶端之間可以通過JMS服務進行異步的消息傳輸

JMS可以看成一種技術規范,接口

JMS支持兩種消息模型:

點對點消息模型:

消息隊列:存放消息(可以看成是一個地址)

生產者:產生消息的一端

消費者:接受消息的一端

生產者將消息發送到隊列,消費者從隊列中獲取消息消費

?

?點對點的特點:

1.生產者生產的消息只能被一個消費者消費,消費成功以后,則將該消息從隊列中清除

2.生產者和消費者在時間上面沒有什么關聯,生產者生產消息的時候,消費者 可以不再,消費者消費消息的時候,不需要關注生產者是否存在

3.接收者在成功接收消息之后需向隊列應答成功

發布訂閱消息模型:

主題

發布者

訂閱者

發布者將消息發布到主題中,訂閱者訂閱主題(可以有多個訂閱者)

?

發布訂閱特點:

1.每個消息可以有多個消費者

2.發布者和訂閱者之間有時間上的依賴性。針對某個主題(Topic)的訂閱者,它必須創建一個訂閱者之后,才能消費發布者的消息,而且為了消費消息,訂閱者必須保持運行的狀態。為了緩和這樣嚴格的時間相關性,JMS允許訂閱者創建一個可持久化的訂閱。這樣,即使訂閱者沒有被激活(運行),它也能接收到發布者的消息。

?

?

如何理解 點對點 和點對消費時候的時間關聯性:

點對點消息模型:生產者 生產消息存放到隊列以后,如果消費者者此時 沒有開啟,運行。則消息不會被消費,會保存到隊列之中,消費者 開啟運行以后,則會從隊列中拉取消息進行消費,正常情況,這條消息是保證會被消費者消費。

發對訂閱:發布者發布消息的時候,訂閱者 訂閱了主題,還必須保證在運行,如果沒有開啟運行,則不會消費到這條消息,即使開啟運行以后,也沒法在消費該消息了。

?

如何選擇JMS 哪種消息模型 進行傳輸消息:

如果你希望發送的每個消息都應該被成功處理的話,那么你需要點對點模式。

如果你希望發送的消息可以不被做任何處理、或者被一個消息者處理、或者可以被多個消費者處理的話,那么可以采用發布/訂閱模型

?

在JMS中,消息的產生和消息是異步的。對于消費來說,JMS的消息者可以通過兩種方式來消費消息。?
?同步消費:
訂閱者或接收者調用receive方法來接收消息,receive方法在能夠接收到消息之前(或超時之前)將一直阻塞?
異步 消費:
訂閱者或接收者可以注冊為一個消息監聽器。當消息到達之后,系統自動調用監聽器的onMessage方法。

?

消息中間件使用場景:

用戶注冊賬號 服務器將數據存入數據庫,然后在給用戶發送短信或者郵件

設想 可以使用多線程技術:在創建一個線程來負責發送注冊郵件,但是 如果發送失敗 則沒有后續的補償機制。

此時可以考慮使用 消息中間件

從這樣來看,使用消息中間件 可以降低響應的時間。

?

所以 學習 消息中間件是當前需要掌握的一種技能,消息中間件有很多產品 例如:RabbitMQ,Redis,ActiveMQ,Kafka/Jafka,學習一兩種 傍身,講述ActiveMQ的使用

?

轉載于:https://www.cnblogs.com/920913cheng/p/10594323.html

總結

以上是生活随笔為你收集整理的ActiveMQ(为什么要使用消息中间件,JMS传输模型)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。