空间站

北极心空

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks

由于最近开发一个MQ接口项目,故用到了IBM的Websphere MQ中间件,关于MQ的一些常规性知识我这里不作叙述,这些也不属本站经验篇范畴之内,MQ支持众多语言,本文是JAVA的API。现以列表体现:

1、给消息定义标识(ID)的方法:

   //使发送的消息标识为 200601  
    String id="200601";  
    MQMessage inMsg = new MQMessage(); //创建消息缓冲区
    inMsg.messageId=id.getBytes();
    String msgString=null;    
    queue.set(inMsg,gmo);

    //接受标识为 200601的消息,其它的将不接受。
    MQMessage inMsg = new MQMessage(); //创建消息缓冲区
    inMsg.messageId=id.getBytes();
    String msgString=null;    
    queue.get(inMsg,gmo);

  以messageId来给消息一个标识,这个标识是字符型的,即String类型的。

2、正确读取整条消息内容

   String msgString;
   msgString=inMsg.readStringOfByteLength(inMsg.getDataLength());


    inMsg.messageId=id.getBytes();
    String msgString=null;
    queue.get(inMsg,gmo);
    //msgString=inMsg.readUTF();
    String msgString;
    msgString=inMsg.readStringOfByteLength(inMsg.getDataLength());

   读取消息常用的方法有:
    readString(长度)
    readStringOfByteLength(长度)
    //以上两个方法为适用于读出整个消息
    readLine()
    //读取一行
  大多数教程中,均使用readString方法,但这个方法有些问题,现在不推荐使用,有些文件可以读,有些文件由于其长度getDataLength获得不对,所以导致出错。所以,我们用readStringOfByteLength来获得整个消息。其参数可以为消息的长度。

3、获得消息内容的长度:

  getDataLength
  getMessageLength
  这两个方法都是获得消息长度,getDataLength是未读出的消息长度,比较,你已经用read方法读取了2000长度的消息,那么getDataLength就是消息总找度减去已读的这部分。而getMessageLength是整个消息的长度。无论是否read它的值是不变的。

inMsg.messageId=id.getBytes();
    String msgString=null;
   
   
  queue.get(inMsg,gmo);
 
 //String k=new String(inMsg.messageId,"gb2312");
 //System.out.println(k.trim());
 
  //msgString=inMsg.readUTF();
  String msg;
  msgString=inMsg.readStringOfByteLength(inMsg.getDataLength());
 
  System.out.println("消息:\n" + msgString);
  System.out.println("\n消息长度:\n" + inMsg.getMessageLength());
  System.out.println("\n消息长度getDataLength:\n" + inMsg.getDataLength());
  qMgr.commit();//提交事务处理
posted on 2006-12-15 15:53 芦苇 阅读(1376) 评论(0)  编辑  收藏 所属分类: JAVA其他

只有注册用户登录后才能发表评论。


网站导航: