MQ簡介:
MQ全稱為Message Queue, 消息隊列(MQ)是一種應用程序對應用程序的通信方法。應用程序通過寫和檢索出入列隊的針對應用程序的數據(消息)來通信,而無需專用連接來鏈接它們。消息傳遞指的是程序之間通過在消息中發送數據進行通信,而不是通過直接調用彼此來通信,直接調用通常是用於諸如遠程過程調用的技術。
MQ特點:
MQ的消費-生產者模型的一個典型的代表,一端往消息隊列中不斷的寫入消息,而另一端則可以讀取或者訂閱隊列中的消息。MQ和JMS類似,但不同的是JMS是SUN Java消息中間件服務的一個標准和API定義,而MQ則是遵循了AMQP協議的具體實現和產品。
使用場景:
在項目中,將一些無需即時返回且耗時的操作提取出來,進行了異步處理,而這種異步處理的方式大大的節省了服務器的請求響應時間,從而提高了系統的吞吐量。
JMS簡介:
JMS(Java Messaging Service)是Java平台上有關面向消息中間件(MOM)的技術規范,它便於消息系統中的Java應用程序進行消息交換,並且通過提供標准的產生、發送、接收消息的接口簡化企業應用的開發,翻譯為Java消息服務。
JMS術語:
1)JMS是實現JMS接口消息中間件
2)Provider(MessageProvider):生產者
3)Consumer(MessageConsumer):消費者
4)PTP:Point to Point,即點對點的消息模型
5)Pub/Sub:publish/Subscribe,即發布/訂閱的消息模型
6)Queue:隊列目標
7)Topic:主題目標
8)ConnectionFactory:連接工廠,JMS用他創建連接
9)Connection:JMS客戶端到JMS Provider的連接
10)Destination:消息的目的地
11)Session:會話,一個發送或者接受的線程
JMS的隊列消息傳遞過程如下圖(消費者與生產者):
JMS的主題消息傳遞過程如下圖(發布/訂閱):
JMS和MQ的關系:
JMS是一個用於提供消息服務的技術規范,它制定了在整個消息服務提供過程中的所有數據結構和交互流程。而MQ則是消息隊列服務,是面向消息中間件(MOM)的最終實現,是真正的服務提供者;MQ的實現可以基於JMS,也可以基於其他規范或標准。