應用程式透過 MQI(Message Queue Interface)與佇列管理器互動。發送端寫入目標佇列,接收端從關聯佇列讀取。佇列可位於發送端、接收端或中間節點,視通道連線狀況而定。MQ 甚至可在訊息到達時自動啟動目標程式(觸發機制)。
關鍵優勢:發送端無需關心接收端是否在線、忙碌或機器故障;訊息滯留佇列待處理,保證不遺失。
JMS 是 J2EE 定義的標準訊息 API,屬於抽象介面。應用呼叫 JMS,底層由 MQ 等中間件實際傳送。JMS 讓應用碼與具體中間件解耦,同一程式可切換 MQ、WebLogic JMS 等提供者。
package transfer;
import com.ibm.mq.*;
public class SendMSG1 {
private MQQueueManager qMgr;
public static void main(String[] args) { new SendMSG1(); }
public SendMSG1() {
MQEnvironment.hostname = "192.168.1.18";
MQEnvironment.channel = "CHANNEL1";
MQEnvironment.CCSID = 1381;
try {
qMgr = new MQQueueManager("QM_SERVER");
int openOpts = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT | MQC.MQOO_INQUIRE;
MQQueue queue = qMgr.accessQueue("INITQ", openOpts, null, null, null);
MQMessage msg = new MQMessage();
msg.format = MQC.MQFMT_STRING;
msg.characterSet = 1381;
msg.writeString("這是測試!");
MQPutMessageOptions pmo = new MQPutMessageOptions();
for (int i = 1; i <= 5; i++) {
msg.expiry = -1; // 永不過期
queue.put(msg, pmo);
}
queue.close();
qMgr.disconnect();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
|、JSON)區分字段,接收端解析還原queue.get() 取出