ก่อนอื่น เรามาแนะนำ websphere mq สั้นๆ รวมถึงการติดตั้งและใช้งานกันก่อน
websphere mq: ใช้เพื่อส่งข้อมูลด้วยฟังก์ชันการทำงานข้ามแพลตฟอร์ม
1 ติดตั้ง websphere mq และเริ่มต้น
2 websphere mq สร้างตัวจัดการคิว (เช่น: MQSI_SAMPLE_QM)
3. สร้างประเภทคิวและเลือกประเภทท้องถิ่น (เช่น lq)
4. กำหนดประเภทช่องสัญญาณและเลือกการเชื่อมต่อเซิร์ฟเวอร์ (เช่น BridgeChannel)
ต่อไปเรามาดูโค้ดตัวอย่าง:
MQFileReceiver.javapackage com.mq.dpca.file; นำเข้า java.io.FileOutputStream; MQGetMessageOptions;นำเข้า com.ibm.mq.MQMessage;นำเข้า com.ibm.mq.MQQueue;นำเข้า com.ibm.mq.MQQueueManager;นำเข้า com.ibm.mq.constants.MQConstants;นำเข้า com.mq.dpca.msg.MQConfig;นำเข้า com.mq.dpca.util.ReadCmdLine; นำเข้า com.mq.dpca.util.RenameUtil; * * ฟังก์ชันการรับไฟล์ของกลุ่ม MQ * การโพลที่ใช้งานอยู่ */คลาสสาธารณะ MQFileReceiver { private MQQueueManager qmgr; // เชื่อมต่อกับตัวจัดการคิว ส่วนตัว MQQueue inQueue; // คิวการส่งข้อมูล private String QueueName = ""; ""; // พอร์ต int ส่วนตัว = 1414; // หมายเลขพอร์ตผู้ฟัง ช่องสตริงส่วนตัว = ""; qmgrName = ""; // ผู้จัดการคิว MQMessage ส่วนตัว inMsg; // สร้างบัฟเฟอร์ข้อความส่วนตัว MQGetMessageOptions gmo; // ตั้งค่าตัวเลือกการรับข้อความส่วนตัว static fileName = null; ccsid = 0; สตริงคงที่ส่วนตัว file_dir = null; /** * รายการโปรแกรม* * @param args */ สาธารณะคงโมฆะ main (String args []) { MQFileReceiver mfs = new MQFileReceiver(); // เริ่มต้นการเชื่อมต่อ mfs.initproperty(); // รับไฟล์ mfs.runGoupReceiver(); // รับชื่อเชลล์สคริปต์// Stringname = MQConfig.getValueByKey(fileName); if( shellname!=null&&!"".equals(shellname)){// //เรียกเชลล์// ReadCmdLine.callShell(shellname);// }else{// System.out.println("ไม่มีชื่อเชลล์ รับเฉพาะไฟล์เท่านั้น");// } public void runGoupReceiver() { try { init(); getGroupMessages (); qmgr.commit(); System.out.println("/n ได้รับข้อความสำเร็จ "); mqe) { mqe.printStackTrace(); ลอง { System.out.println("/n Backing out Transaction"); qmgr.backout(); } catch (ข้อยกเว้น e) { e.printStackTrace( ); System.exit(2); } } catch (ข้อยกเว้น e) { e.printStackTrace(); System.exit(2); เริ่มต้นข้อมูลการเชื่อมต่อเซิร์ฟเวอร์ * * @throws Exception */ private void init() พ่นข้อยกเว้น { /* ตั้งค่าคุณสมบัติ MQEnvironment สำหรับการเชื่อมต่อไคลเอนต์ */ MQEnvironment.hostname = host; MQEnvironment.channel = channel; /* Connect ไปยังตัวจัดการคิว*/ qmgr = new MQQueueManager(qmgrName); /* ตั้งค่าตัวเลือกการเปิดคิวสำหรับอินพุต */ int opnOptn = MQConstants.MQOO_INPUT_AS_Q_DEF | MQConstants.MQOO_FAIL_IF_QUIESCING; /* เปิดคิวสำหรับอินพุต */ inQueue = qmgr.accessQueue(queueName, opnOptn, null, null, null); * ยอมรับฟังก์ชั่นหลักของไฟล์ * * @throws ข้อยกเว้น */ public void getGroupMessages() { /* ตั้งค่ารับตัวเลือกข้อความ */ gmo = new MQGetMessageOptions(); gmo.options = MQConstants.MQGMO_FAIL_IF_QUIESCING; / gmo.options = gmo.options + MQConstants.MQGMO_WAIT; /* กำหนดเวลารอคอย */ gmo.waitInterval = 5000; /* รับข้อความเท่านั้น */ gmo.options = gmo.options + MQConstants.MQGMO_ALL_MSGS_AVAILABLE; gmo.options + MQConstants.MQGMO_LOGICAL_ORDER; gmo.matchOptions = MQConstants.MQMO_MATCH_GROUP_ID; /* สร้างบัฟเฟอร์ข้อความ*/ inMsg = new MQMessage(); ลอง { FileOutputStream fos = null; /* ประมวลผลข้อความกลุ่ม*/ ในขณะที่ (จริง) { ลอง { inQueue.get(inMsg, gmo) ); if (fos == null) { ลอง { fileName = inMsg.getStringProperty("fileName"); String fileName_full = file_dir + RenameUtil.rename(fileName); ไบต์ [] = ไบต์ใหม่ [msgLength]; inMsg.readFully(buffer); fos.write(buffer, 0, msgLength); /* ตรวจสอบว่าเป็นตัวระบุข้อความสุดท้ายหรือไม่*/ char x = gmo.groupStatus; if (x == MQConstants.MQGS_LAST_MSG_IN_GROUP) .println ("ข่าวสารล่าสุดในกลุ่ม"); } inMsg.clearMessage(); (ข้อยกเว้น e) { System.out .println("รับข้อความโดยไม่มีคุณสมบัติ ไม่ต้องทำอะไรเลย!"); inMsg.clearMessage(); } } else { int msgLength = inMsg.getMessageLength(); byte[] buffer = ไบต์ใหม่ [msgLength]; inMsg.readFully(บัฟเฟอร์); fos.write(บัฟเฟอร์, 0, msgLength); ตรวจสอบว่าเป็นตัวระบุข้อความสุดท้าย*/ char x = gmo.groupStatus; if (x == MQConstants.MQGS_LAST_MSG_IN_GROUP) { System.out.println("Last Msg in Group"); break; } } catch (ข้อยกเว้น e) { char x = gmo.groupStatus; if (x == MQConstants.MQGS_LAST_MSG_IN_GROUP) { System.out.println("ข่าวสารล่าสุดในกลุ่ม"); } ตัวหยุด; } } if (fos != null) fos.close(); } catch (ข้อยกเว้น e) { System.out.println( e.getMessage()); } } โมฆะสาธารณะ initproperty() { MQConfig config = new MQConfig().getInstance(); if (config.getMQ_MANAGER() != null) { qmgrName = config.getMQ_MANAGER(); QueueName = config.getMQ_QUEUE_NAME(); ); พอร์ต = จำนวนเต็ม (config.getMQ_PROT()); ccsid = จำนวนเต็ม (config.getMQ_CCSID()); file_dir = config.getFILE_DIR()