這次簡單羅列一下MQ的基本概念,還有我對它們的理解
1、queue manager 隊列管理器,這是MQ系統中最上層的一個概念。每一個queue manager都有一個偵聽器,如果它要接受消息的話,每個queue manager中管理多個隊列queue和消息通道message channel。
2、消息 message,消息是應用程序交給MQ來傳輸的數據。
3、隊列 queue,隊列是用來存放消息的,把消息存放到隊列中,直到應用程序或其他MQ對象來處理或取走。
假如,系統A和系統B之間需要數據傳輸,那么應用程序在系統A端把消息放到MQ的隊列中,在系統B端的應用程序從隊列中取消息,至于系統A到系統B的數據傳輸,那是MQ要做的事情。
我用到的隊列有三種,本地隊列,遠程隊列,傳輸隊列。其中傳輸隊列也是本地隊列的一種,也叫本地傳輸隊列,另外一個叫普通本地隊列。
普通本地隊列是消息的暫存區,應用程序可以通過API直接把消息放入本地隊列,或者取走消息,普通本地隊列是占用磁盤空間的,應該是對應磁盤上測某個文件。
本地傳輸隊列是一個存儲轉發隊列,資料上是這么說的:比如,我們將某個消息交給MQ系統發送到遠程主機,而此時網絡發生故障,MQ將把消息放在傳輸隊列中暫存,當網絡恢復時,再發往遠端目的地。
本地傳輸隊列也是要占用磁盤存儲空間的。
遠程隊列是一個定義,它是目的MQ系統中的本地隊列在本系統中的一個映像,就像定義了一個指針,指向目的系統的本地隊列一樣。它不占用磁盤空間。
還有模板隊列和動態隊列的概念,很好理解,模板隊列就是一個模板,定義新的隊列時可以照著這個模板創建。動態隊列沒用過,聽說很靈活,是MQ的特色。
4、消息通道 message channel 消息通道是一個邏輯概念,它是隊列管理器之間傳輸消息的管道,它建立在屋里的網絡連接之上。傳說,通道是MQ的精華,由于我沒用過其他的消息中間件產品,也沒有深入使用MQ,所以沒有看出這精華二字體現在何處。
消息通道是單向的,由發送方通道和接收方通道組成,而且這兩個必須是同名的。如系統A要發消息到系統B,那么需要在A中建立發送方通道,在B建立接收方通道,必須同名。
另外還有兩種通道,MQI通道和Cluster通道,我沒用,就沒深究,要是以后用到,就深挖一下。
5、偵聽器 listener 這是在接受消息方必不可少的。它偵聽一個端口(默認為1414,可以更改),等待發送方的連接。