mq读取

来源:互联网 发布:apache 进程过多 编辑:程序博客网 时间:2024/05/20 20:17
原创作者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. }    
原创粉丝点击