更新時(shí)間:2022-09-23 10:15:00 來源:動(dòng)力節(jié)點(diǎn) 瀏覽731次
MQ 稱為消息隊(duì)列。消息隊(duì)列 (MQ) 是一種應(yīng)用程序到應(yīng)用程序的通信方法。應(yīng)用程序通過在隊(duì)列內(nèi)外寫入和檢索特定于應(yīng)用程序的數(shù)據(jù)(消息)進(jìn)行通信,而無需專用連接來鏈接它們。消息傳遞是指程序之間通過消息中的數(shù)據(jù)進(jìn)行通信,而不是直接相互調(diào)用進(jìn)行通信。直接調(diào)用通常用于遠(yuǎn)程過程調(diào)用等技術(shù)。隊(duì)列是指通過隊(duì)列進(jìn)行通信的應(yīng)用程序。隊(duì)列的使用消除了同時(shí)執(zhí)行接收和發(fā)送應(yīng)用程序的要求。其中較為成熟的 MQ 產(chǎn)品有 IBM WebSphere MQ、RabbitMQ、ZeroMQ、ActiveMQ、Redis(用作輕量級隊(duì)列服務(wù))、Kafka、RocketMQ。它們之間的比較見:特點(diǎn):MQ的consumer-producer模型的典型代表,一端不斷向消息隊(duì)列寫入消息,另一端可以讀取或訂閱隊(duì)列中的消息。MQ 與 JMS 類似,不同之處在于 JMS 是 SUN Java 消息中間件服務(wù)的標(biāo)準(zhǔn)和 API 定義,而 MQ 是遵循 AMQP 協(xié)議的具體實(shí)現(xiàn)和產(chǎn)品。
1.異步通信
一些企業(yè)不希望或不需要立即處理消息。消息隊(duì)列提供了一種異步處理機(jī)制,允許用戶將消息放入隊(duì)列,但不會(huì)立即處理。將任意數(shù)量的消息放入隊(duì)列中,然后在需要時(shí)處理它們。
2. 解耦
降低項(xiàng)目之間的強(qiáng)依賴程度,適應(yīng)異構(gòu)系統(tǒng)。在項(xiàng)目之初,很難預(yù)測項(xiàng)目未來會(huì)遇到什么需求。通過消息系統(tǒng),一個(gè)隱式的基于數(shù)據(jù)的接口層被插入到處理的中間。雙方的處理都必須實(shí)現(xiàn)這個(gè)接口。當(dāng)應(yīng)用程序發(fā)生變化時(shí),雙方的處理可以獨(dú)立擴(kuò)展或修改。它們遵循相同的界面約束。
3.冗余
在某些情況下,處理數(shù)據(jù)的過程會(huì)失敗。除非數(shù)據(jù)被持久化,否則它將丟失。消息隊(duì)列將數(shù)據(jù)持久化,直到它們被完全處理,從而避免了數(shù)據(jù)丟失的風(fēng)險(xiǎn)。在很多消息隊(duì)列采用的“insert-get-delete”范式中,在從隊(duì)列中刪除一條消息之前,你的處理系統(tǒng)需要清楚地表明該消息已經(jīng)被處理,以確保你的數(shù)據(jù)被安全存儲(chǔ),直到你用完為止。
以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"mq使用場景介紹",希望對大家有幫助,想了解更多可查看Java教程。動(dòng)力節(jié)點(diǎn)在線學(xué)習(xí)教程,針對沒有任何Java基礎(chǔ)的讀者學(xué)習(xí),讓你從入門到精通,主要介紹了一些Java基礎(chǔ)的核心知識(shí),讓同學(xué)們更好更方便的學(xué)習(xí)和了解Java編程,感興趣的同學(xué)可以關(guān)注一下。
初級 202925
初級 203221
初級 202629
初級 203743