MQ 收,發 類

jar 見附件

 

 

 

代碼:

 

 package csmp.util;


import java.util.Date;
import org.w3c.dom.Document;
import com.ibm.mq.MQC;
import com.ibm.mq.MQEnvironment;
import com.ibm.mq.MQException;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQPutMessageOptions;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;
import com.ibm.ws.management.application.dfltbndngs.DOMParser;
import csmp.base.SystemInfo;
import csmp.util.XmlUtil;

public class MQUtil {  
   
    private static String qmName;   
    private static String qName;  
    private static MQQueueManager qMgr;  
    


    private static void initMq() throws Exception{
        String patch= SystemInfo.getMQFolder();
      

       
        DOMParser parser = new DOMParser();
        Document doc = parser.parse(patch);
       
        MQEnvironment.hostname=XmlUtil.getNodeValue(doc.getDocumentElement(), "HOSTNAME");           
           MQEnvironment.channel=XmlUtil.getNodeValue(doc.getDocumentElement(), "CHANNEL");  
           MQEnvironment.CCSID=Integer.parseInt(XmlUtil.getNodeValue(doc.getDocumentElement(), "CCSID"));                      
           MQEnvironment.port=Integer.parseInt(XmlUtil.getNodeValue(doc.getDocumentElement(), "PORT"));                  
           qmName = XmlUtil.getNodeValue(doc.getDocumentElement(), "QMNAME");                       
           qName = XmlUtil.getNodeValue(doc.getDocumentElement(), "SENDNAME");   
          
          
           try { 
              qMgr = new MQQueueManager(qmName);  
          } catch (MQException e) {  
              throw e;
          }
    }
   
   
    public static  void sendMessage(String message,String msgID) throws Exception{   
        try{ 
         initMq();
             int openOptions = MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING;  
           
             if(qMgr==null || !qMgr.isConnected()){  
               qMgr = new MQQueueManager(qmName);  
           }  
            MQQueue queue = qMgr.accessQueue(qName, openOptions);            
            
            MQMessage putMessage = new MQMessage();   
            putMessage.messageId = msgID.getBytes();
           // putMessage.writeUTF(message); 
            putMessage.write(message.getBytes("UTF-8"));
          
            MQPutMessageOptions pmo = new MQPutMessageOptions();             
              
            queue.put(putMessage,pmo);   
            queue.close();  

        }catch(Exception e){  
         e.printStackTrace(System.out);
            throw e;
        }finally{  
            try {  
               qMgr.disconnect();  
           } catch (MQException e) {  
            throw e;
           }  
         }   
    }   
  
   
   
    public static void getMessage(String msgID) throws MQException {  
    //手動賦值
      MQEnvironment.hostname="192.168.1.123";           
         MQEnvironment.channel="SYSTEM.DEF.SVRCONN";           
         MQEnvironment.CCSID=1208;                      
         MQEnvironment.port=1414;                  
         qmName = "QM";                       
         qName = "LB.IN";                        
         try { 
            qMgr = new MQQueueManager(qmName);  
        } catch (MQException e) {  
            throw e;
        }
    
    
        int openOptions = MQC.MQOO_INPUT_AS_Q_DEF|MQC.MQOO_OUTPUT|MQC.MQOO_INQUIRE;  
        MQQueue queue = null;  
        try {  
            queue = qMgr.accessQueue(qName, openOptions, null, null,null);  
              
             
            int depth = queue.getCurrentDepth();  
            //將隊列的裏的消息讀出來  
            while(depth-->0)  
            {  
                MQMessage msg = new MQMessage();// 要讀的隊列的消息  
                msg.messageId = msgID.getBytes();
               
                MQGetMessageOptions gmo = new MQGetMessageOptions();  
                queue.get(msg, gmo);   
               
        int len = msg.getDataLength();
        byte[] buf = new byte[len];
        msg.readFully(buf, 0, len);
       String strmsgCont = new String(buf, "UTF-8");
      
               
                System.out.println("消息的內容:\n"+strmsgCont);  
            }  
        } catch (MQException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (Exception e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }finally{  
            if(queue!=null){  
                try {  
                    queue.close();  
                } catch (MQException e) {  
                    // TODO Auto-generated catch block  
                    e.printStackTrace();  
                }  
            }  
        }  
    }
}

 

 

 

本地文件XML :

 

 

<?xml version="1.0" encoding="UTF-8"?>
<mq>

    <HOSTNAME>172.16.31.100</HOSTNAME>
    <queue-mgr-name>QM_NAME</queue-mgr-name>
    <QMNAME>QUEUE_NAME</QMNAME>
    <SENDNAME>CHANNEL_Name</SENDNAME>
    <CCSID>1208</CCSID>
    <PORT>1414</PORT>
</mq>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章