加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

MQ队列长度

(2011-11-21 12:57:54)
标签:

杂谈

分类: 数据库
原创作者ID:bicashy
MQ应用程序的开发,简单的实现一下关键的发送消息和接收消息的操作.首先做简单的准备工作,建队列管理器QM1,在QM1中建队列Q1,然后在高级中建立通道BICASHY,类型为服务器连接通道,端口号1414,这里做最简单的配置,死信、传输队列及远程队列都暂时不建。。。
:如果建另一个队列管理器QM2,其侦听端口一定不能和1414重复。
  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.    

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有