MQと通信する完全なJAVAプログラム

6925 ワード

このプログラムの元のドキュメントはインターネットから来ていますが、作者が誰なのか分かりません.先にお礼を言って、私は個人の理解を増やして、注釈を増やして、このように読みやすくて理解しやすいです.
このプログラムはメッセージの送信とメッセージの読み取り機能を実現し、send***とget***メソッドを参照してください.これはテストにのみ適しています.環境内のプログラムはこれに対して少し変更する必要があるため、実際の環境ではwhile(true){...}の無限ループでgetメソッドを呼び出し、値があればメッセージの処理操作を実行し、値がなければループを続け、getメソッドで待つ時間があります.
このプログラムはそれ自体が理解できます.
1、まず関連する環境変数を設定する
2、再接続キューマネージャ
3、キューマネージャで指定されたキューを再操作する
4、指定されたキューにメッセージを送るか、指定された対列からメッセージを取り出す
5、キューを閉じる
MQエクスプローラでリモート・キューを構成し、リモート・キューを介してリモートのMQにメッセージを送信する方法が分からない場合は、次の文書を参照してください.
http://blog.csdn.net/fenglibing/archive/2009/05/08/4160639.aspx
実際の環境でのMQは、少なくとも2つのローカルキューと1つのリモートキューがあるべきだと思います.メッセージのインタラクションは必ず相互であり、受信メッセージがあり、送信メッセージもあるに違いありません.ローカルキューは、外部から送信されたメッセージを受信するために使用され、通常の使用方法です.もう1つのローカル・キューは、リモート・キューの転送キューとして使用され、リモート・ホストのローカル・キューにメッセージを送信します.メッセージをリモート・キューに正常に転送するには、チャネルを構成する必要があります.通常、リモート・チャネルのIPアドレスおよびポート、ローカル・トランスポート・キューの名前、およびローカルの通信アドレスを指定する必要があります.これにより、リモート・ホストにメッセージを送信できます.
/**
 * @author Fenglb E-mail:[email protected]
 * @version     :2009-4-30   04:13:38
 *    
 */
import java.io.IOException;
import com.ibm.mq.MQC;
import com.ibm.mq.MQEnvironment;
import com.ibm.mq.MQException;
import com.ibm.mq.MQGetMessageOptions;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQPutMessageOptions;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;

public class MessageByMQ{
     //             
     private static String qmName; 
     private static String qName;
     private static MQQueueManager qMgr;
     static{
    	 //    :
    	 //MQEnvironment     MQQueueManager              ,MQEnvironment       MQQueueManager             ,
    	 //       MQQueueManager      MQEnvironment   .
    	 MQEnvironment.hostname="10.24.1.180";         	//MQ    IP        
    	 MQEnvironment.channel="S_FENGLB";  			//        
    	 MQEnvironment.CCSID=1381;              		//   MQ       1381  GBK、1208  UTF(Coded Character Set Identifier:CCSID)
    	 MQEnvironment.port=1414;						//MQ  
    	 qmName = "QM_FENGLB";							//MQ        
         qName = "testQ";								//MQ       
         try {
        	 //                 
	    	 //MQQueueManager        ,   MQ           ,             MQ  。
			qMgr = new MQQueueManager(qmName);
		} catch (MQException e) {
			// TODO Auto-generated catch block
			System.out.println("   MQ  ");
			e.printStackTrace();
		} 
     }
     /**
      *  MQ    
      * @param message
      * @return
      */
     public static int sendMessage(String message){
    	 int result=0;
    	 try{	
    		 //           
    	     // Note. The MQC interface defines all the constants used by the WebSphere MQ Java programming interface 
    	     //(except for completion code constants and error code constants).
    	     //MQOO_INPUT_AS_Q_DEF:Open the queue to get messages using the queue-defined default.
    	     //MQOO_OUTPUT:Open the queue to put messages.
    		 /*       ,        MQOO_INPUT_AS_Q_DEF  */
    		 //int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT;
    		 /*                */
    		 int openOptions = MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING;
	         //     
	         //MQQueue provides inquire, set, put and get operations for WebSphere MQ queues. 
	         //The inquire and set capabilities are inherited from MQManagedObject. 
    		 /*        */
 			if(qMgr==null || !qMgr.isConnected()){
 				qMgr = new MQQueueManager(qmName);
 			}
	         MQQueue queue = qMgr.accessQueue(qName, openOptions); 	        
	         //         
	         MQMessage putMessage = new MQMessage(); 
	         //          
	         putMessage.writeUTF(message);	
	         //         (    )
	         MQPutMessageOptions pmo = new MQPutMessageOptions();	        
	         //        
	         queue.put(putMessage,pmo); 
	         queue.close();
    	 }catch (MQException ex) { 
             System.out.println("A WebSphere MQ error occurred : Completion code " 
             + ex.completionCode + " Reason code " + ex.reasonCode); 
             ex.printStackTrace();
         }catch (IOException ex) { 
             System.out.println("An error occurred whilst writing to the message buffer: " + ex); 
         }catch(Exception ex){
             ex.printStackTrace();
         }finally{
        	 try {
 				qMgr.disconnect();
 			} catch (MQException e) {
 				e.printStackTrace();
 			}
          }
    	 return result;
     }
     /**
      *          ,         ,      ,      , TRY...CATCH,            ,           
      *                   while(true){...}  ,       ,                     。
      * @return
      */
     public static String getMessage(){
    	 String message=null;
    	 try{    		 
    		 //           
    	     // Note. The MQC interface defines all the constants used by the WebSphere MQ Java programming interface 
    	     //(except for completion code constants and error code constants).
    	     //MQOO_INPUT_AS_Q_DEF:Open the queue to get messages using the queue-defined default.
    	     //MQOO_OUTPUT:Open the queue to put messages.
    		 int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT;
	    	 MQMessage retrieve = new MQMessage();
	    	 //         (    )
	    	 //Set the put message options.(        ) 
    		 MQGetMessageOptions gmo = new MQGetMessageOptions(); 
    		 gmo.options = gmo.options + MQC.MQGMO_SYNCPOINT;//Get messages under sync point control(           ) 
    		 gmo.options = gmo.options + MQC.MQGMO_WAIT;  // Wait if no messages on the Queue(             ) 
    		 gmo.options = gmo.options + MQC.MQGMO_FAIL_IF_QUIESCING;// Fail if Qeue Manager Quiescing(            ) 
    		 gmo.waitInterval = 1000 ;  // Sets the time limit for the wait.(           ) 
    		 /*        */
 			if(qMgr==null || !qMgr.isConnected()){
 				qMgr = new MQQueueManager(qmName);
 			}
	         MQQueue queue = qMgr.accessQueue(qName, openOptions); 
	         //         
	         queue.get(retrieve, gmo);
	         message = retrieve.readUTF();	
	         System.out.println("The message is: " + message); 
	         queue.close();
    	 }catch (MQException ex) { 
             System.out.println("A WebSphere MQ error occurred : Completion code " 
             + ex.completionCode + " Reason code " + ex.reasonCode); 
         }catch (IOException ex) { 
             System.out.println("An error occurred whilst writing to the message buffer: " + ex); 
         }catch(Exception ex){
             ex.printStackTrace();
         }finally{
        	 try {
				qMgr.disconnect();
			} catch (MQException e) {
				e.printStackTrace();
			}
         }
    	 return message;
     }
     public static void main(String args[]) {
    	 /*           ,       */
    	 sendMessage("this is a test");
    	 //getMessage();
     }
}

転載先:http://blog.csdn.net/fenglibing/article/details/4161441