MQSI_SAMPLE_QMlqBridgeChannelMQSI_SAMPLE_QMlqBridgeChannel,監聽端口默認 1414package test.mq;
import com.ibm.mq.*;
public class FirstMqTest {
public static void main(String[] args) {
new FirstMqTest().test();
}
public void test() {
String qManager = "MQSI_SAMPLE_QM";
String qName = "lq";
try {
// 1. 配置連接參數
MQEnvironment.hostname = "172.16.17.123"; // MQ 服務器 IP
MQEnvironment.channel = "BridgeChannel"; // 通道名
MQEnvironment.CCSID = 1381; // 字符集 (UTF-8)
// MQEnvironment.port = 1414; // 如非默認端口需顯式設置
// 2. 連接 Queue Manager
System.out.println("Connecting to queue manager: " + qManager);
MQQueueManager qMgr = new MQQueueManager(qManager);
// 3. 打開隊列(輸入+輸出模式)
int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT;
System.out.println("Accessing queue: " + qName);
MQQueue queue = qMgr.accessQueue(qName, openOptions);
// 4. 構造消息並發送
MQMessage msg = new MQMessage();
msg.writeUTF("Hello, World!");
MQPutMessageOptions pmo = new MQPutMessageOptions();
// 批量發送 5 條測試消息
for (int j = 0; j < 5; j++) {
String str = "test11111111111" + j;
msg.writeUTF(str);
queue.put(msg, pmo);
}
queue.put(msg, pmo); // 再發送初始消息
System.out.println("Sending messages done.");
// 5. 接收消息
MQMessage rcvMessage = new MQMessage();
MQGetMessageOptions gmo = new MQGetMessageOptions();
System.out.println("Getting message back...");
queue.get(rcvMessage, gmo);
String msgText = rcvMessage.readUTF();
System.out.println("Received: " + msgText);
// 6. 清理資源
queue.close();
qMgr.disconnect();
System.out.println("Done!");
} catch (MQException ex) {
System.err.println("MQ Error: CC=" + ex.completionCode + ", RC=" + ex.reasonCode);
} catch (java.io.IOException ex) {
System.err.println("IO Error: " + ex);
}
}
}
| 類/接口 | 用途 |
|---|---|
MQEnvironment | 靜態設置連接屬性:hostname、channel、port、CCSID、SSL 配置等 |
MQQueueManager | 代表與 QM 的連接,負責事務協調、資源管理 |
MQQueue | 隊列操作句柄,put()/get() 核心方法 |
MQMessage | 消息載體,支持 writeUTF()/readUTF()、流式讀寫、Headers 操作 |
MQPutMessageOptions | 發送選項:持久化、優先級、回覆隊列等 |
MQGetMessageOptions | 接收選項:等待超時、瀏覽模式、轉換選項等 |
BridgeChannel 的 MCAUSERMQEnvironment.CCSID 必須與隊列管理器一致,中文環境常用 1381 (UTF-8) 或 5488 (GB18030)com.ibm.mq.jar、com.ibm.mqjms.jar、connector.jar 等,建議用 Maven 管理:com.ibm.mq:com.ibm.mq.allclientWMQInitialContextFactory 通過 JNDI 獲取 ConnectionFactory/Queue,代碼與 MQ 實現解耦qMgr.begin()/commit()/rollback() 實現本地事務MQEnvironment.sslCipherSuite、密鑰庫WebSphere MQ 提供企業級可靠消息傳遞,Java 客戶端 API 成熟穩定。掌握「環境配置 → 連接 QM → 打開隊列 → 構造消息 → 收發 → 資源釋放」核心流程,並關注權限、編碼、事務、高可用等生產環境要點,即可穩健集成 MQ 消息中間件。