WebSphere MQ 概念
1. 一種中間件產品,實現了消息隊列框架,介於應用和操作系統之間,相關應用的基礎平台。
2. 以實現應用系統在異構的操作系統平台之間穩定可靠地傳遞,交換重要的數據和信息,確保消息不丟失不復傳。
3. 提供了強大、 安全、 穩定的消息傳遞主干,可幫助搭建企業服務總線(ESB)的基礎傳輸層。
4. 實現 MQI(Message Queue Interface) 接口,實現異步通信。消息隊列接口為程序提供了一種異步通信方式。一個程序以一個隊列作為中轉與另一個程序相互通信,這個隊列相對於該程序而言既可是本地的也可以是遠程的。當程序A需要和程序B通信時,A只需PUT一條消息到一個和B相聯系的隊列上,程序A然后可以干別的事。它似乎感覺不到通信的發生,通信以及對通信錯誤的恢復是由隊列管理完成的。
WebSphere MQ主要對象
消息 數據的傳輸載體,與應用系統交互的數據均被包裝成消息。
隊列 是用於存儲消息的數據結構。按功能可以分為本地隊列、遠程隊列、傳輸隊列、模板隊列、別名隊列、死信隊列等等。
隊列管理器 在WebSphere MQ中隊列管理器是基本的軟件系統,隊列管理器可看成是隊列和其他對象的容器。
通道 是一種提供從一個隊列管理器到另一個隊列管理器的通信路徑。它又叫消息通道,用在分布式的隊列把消息從一個隊列管理器發送到另一個隊列管理器。
按照定義可以分為發送通道(Sender)、接收通道(Receiver)、服務器通道(Server)、請求器通道(Requester)等。
MQSC命令 是用來管理隊列管理器對象,包括隊列管理器本身、通道、隊列和進程定義。 可以使用 runmqsc 向隊列管理器發出 MQSC 命令。
IBM WebSphere MQ 支持兩種不同的應用程序編程接口:Java 消息服務(JMS)和消息隊列接口(MQI)。在 IBM WebSphere MQ 服務器上,JMS 綁定方式被映射到 MQI。如圖 3 所示,應用程序直接與其本地隊列管理器通過使用 MQI 進行對話,MQI 是一組要求隊列管理器提供服務的調用。MQI 的引人之處是它只提供 13 次調用。這意味着對於應用程序編程員它是一種非常易於使用的接口,因為大部分艱苦工作都將透明完成的。
消息通道代理程序(MCA) 每個通道定義都屬於特定隊列管理器,隊列管理器可具有同一類型或不同類型的幾個通道。通道的每一端是程序消息通道代理程序(MCA)。在通道的一端,調用方MCA從傳輸隊列取出消息並通過通道發送它們。在通道的另一端,響應方MCA接收這些消息並將它們傳遞至遠程隊列管理器。
調用方 MCA 可與發送方通道、服務器通道或請求方通道關聯。響應方 MCA 可與消息通道的任何類型關聯。
進程 - 定義和標識響應 WebSphere MQ 隊列管理器上的觸發器事件的應用程序;進程與MQ的觸發器機制相關;指MQ服務器的一個對象,注意和操作系統的進程概念區分。
偵聽器 - 為MQ服務器偵聽某個TCP 端口。對於某個MQ服務器,當允許客戶端或者遠程的隊列管理器通過通道連接到本地的隊列管理器時,必須啟動偵聽器,監聽本地的某個TCP端口,默認端口號為1414。
上圖顯示了 IBM WebSphere MQ 編程的原理。
第一步是讓應用程序與隊列管理器連接。它通過 MQConnect 調用來進行此連接。
下一步使用 MQOpen 調用為輸出打開一個隊列。
然后應用程序使用 MQPut 調用將其數據放到隊列上。
要接收數據,應用程序調用 MQOpen 調用打開輸入隊列。應用程序使用 MQGet 調用從隊列上接收數據。
開發步驟:
建立MQ客戶端應用上下文環境
連接隊列管理器(通過 MQConnect 調用來進行此連接)
打開隊列
放入消息
q.put(msg);
關閉隊列
q.close();
斷開隊列管理器連接
消息ID
兩個隊列管理器生成的消息ID,是會重復的,這種幾率比較小。
若你有多台機器向一台機器發送消息,建議根據本地網卡唯一標識自定義
生成消息的ID。
獲取消息時,new 一個MQMessage對象,將消息ID字符轉化為byte數組,
放入messageId,然后通過mqQueue.get(mqMsg, gmo)就能獲取到指定的消息。
當消息ID重復時,只能按優先級或消息的次序,優先獲取一條消息。
安裝WebSphere MQ
https://cloud.tencent.com/developer/article/1124979
https://cloud.tencent.com/developer/article/1124981
MQ選型
https://blog.csdn.net/rockstar541/article/details/83901436
http://publib.boulder.ibm.com/tividd/td/ITAMFBI/SC23-4831-01/zh_CN/HTML/ADM51mst02.htm#wq1
性能調優
https://www.cnblogs.com/tbyang/p/3457440.html
參考 :