mq讀取

原創作者ID:bicashy 
MQ應用程序的開發,簡單的實現一下關鍵的發送消息和接收消息的操作.首先做簡單的準備工作,建隊列管理器QM1,在QM1中建隊列Q1,然後在高級中建立通道BICASHY,類型爲服務器連接通道,端口號1414,這裏做最簡單的配置,死信、傳輸隊列及遠程隊列都暫時不建。。。 
:如果建另一個隊列管理器QM2,其偵聽端口一定不能和1414重複。 
Java代碼  收藏代碼
  1. package com.wondertek.flow.test;     
  2.     
  3. import java.io.IOException;     
  4.     
  5. import com.ibm.mq.MQC;     
  6. import com.ibm.mq.MQEnvironment;     
  7. import com.ibm.mq.MQException;     
  8. import com.ibm.mq.MQGetMessageOptions;     
  9. import com.ibm.mq.MQMessage;     
  10. import com.ibm.mq.MQPutMessageOptions;     
  11. import com.ibm.mq.MQQueue;     
  12. import com.ibm.mq.MQQueueManager;     
  13.     
  14. public class MQManager {     
  15.     
  16.     private MQQueueManager qMgr;     
  17.     
  18.     private void getConnMQmanager() {     
  19.         MQEnvironment.hostname = "77.20.17.15";// MQ服務器IP     
  20.         MQEnvironment.channel = "BICASHY";     // 隊列管理器對應的服務器連接通道     
  21.         MQEnvironment.CCSID = 1381;            // 字符編碼     
  22.         MQEnvironment.port = 1414;             // 隊列管理器的端口號     
  23.         try {     
  24.             qMgr = new MQQueueManager("QM1");// 隊列管理器名稱     
  25.         } catch (MQException e) {     
  26.             // TODO Auto-generated catch block     
  27.             e.printStackTrace();     
  28.         }     
  29.     }     
  30.     
  31.     private void closeConnMQmanager() {     
  32.         if (qMgr != null) {     
  33.             try {     
  34.                 qMgr.close();     
  35.             } catch (MQException e) {     
  36.                 // TODO Auto-generated catch block     
  37.                 e.printStackTrace();     
  38.             }     
  39.         }     
  40.     }     
  41.     
  42.     public void sendMsg(String msgStr){     
  43.         int openOptions = MQC.MQOO_INPUT_AS_Q_DEF|MQC.MQOO_OUTPUT|MQC.MQOO_INQUIRE;     
  44.         MQQueue queue = null;     
  45.         try {     
  46.             //建立Q1通道的連接     
  47.             queue = qMgr.accessQueue("Q1", openOptions, nullnull,null);       
  48.             MQMessage msg = new MQMessage();// 要寫入隊列的消息     
  49.             msg.format = MQC.MQFMT_STRING;     
  50.             msg.characterSet = 1381;     
  51.             msg.writeObject(msgStr); //將消息寫入消息對象中     
  52.             MQPutMessageOptions pmo = new MQPutMessageOptions();     
  53.             msg.expiry = -1;    // 設置消息用不過期     
  54.             queue.put(msg, pmo);// 將消息放入隊列     
  55.         } catch (MQException e) {     
  56.             // TODO Auto-generated catch block     
  57.             e.printStackTrace();     
  58.         } catch (IOException e) {     
  59.             // TODO Auto-generated catch block     
  60.             e.printStackTrace();     
  61.         }finally{     
  62.             if(queue!=null){     
  63.                 try {     
  64.                     queue.close();     
  65.                 } catch (MQException e) {     
  66.                     // TODO Auto-generated catch block     
  67.                     e.printStackTrace();     
  68.                 }     
  69.             }     
  70.         }     
  71.     }     
  72.          
  73.     public void receiveMsg()     
  74.     {     
  75.         int openOptions = MQC.MQOO_INPUT_AS_Q_DEF|MQC.MQOO_OUTPUT|MQC.MQOO_INQUIRE;     
  76.         MQQueue queue = null;     
  77.         try {     
  78.             queue = qMgr.accessQueue("Q1", openOptions, nullnull,null);     
  79.                  
  80.             System.out.println("該隊列當前的深度爲:"+queue.getCurrentDepth());     
  81.             System.out.println("===========================");     
  82.             int depth = queue.getCurrentDepth();     
  83.             //將隊列的裏的消息讀出來     
  84.             while(depth-->0)     
  85.             {     
  86.                 MQMessage msg = new MQMessage();// 要讀的隊列的消息     
  87.                 MQGetMessageOptions gmo = new MQGetMessageOptions();     
  88.                 queue.get(msg, gmo);     
  89.                 System.out.println("消息的大小爲:"+msg.getDataLength());     
  90.                 System.out.println("消息的內容:\n"+msg.readObject());     
  91.                 System.out.println("---------------------------");     
  92.             }     
  93.         } catch (MQException e) {     
  94.             // TODO Auto-generated catch block     
  95.             e.printStackTrace();     
  96.         } catch (Exception e) {     
  97.             // TODO Auto-generated catch block     
  98.             e.printStackTrace();     
  99.         }finally{     
  100.             if(queue!=null){     
  101.                 try {     
  102.                     queue.close();     
  103.                 } catch (MQException e) {     
  104.                     // TODO Auto-generated catch block     
  105.                     e.printStackTrace();     
  106.                 }     
  107.             }     
  108.         }     
  109.     }     
  110.          
  111.     public static void main(String[] args) {     
  112.         MQManager mm = new MQManager();     
  113.         mm.getConnMQmanager();     
  114.         try {     
  115.             mm.sendMsg("第一條測試信息");     
  116.             mm.sendMsg("test第二條測試信息");     
  117.             mm.receiveMsg();     
  118.         } catch (Exception e) {     
  119.             // TODO Auto-generated catch block     
  120.             e.printStackTrace();     
  121.         }     
  122.         mm.closeConnMQmanager();     
  123.     }     
  124. }    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章