loadrunner使用java 实现MQ协议发收脚本

来源:互联网 发布:日本好听的歌 知乎 编辑:程序博客网 时间:2024/06/06 16:47

loadrunner使用java 实现MQ协议发收脚本


/*************************************************脚本编写信息描述:项目名称:JAVA操作MQ消息队列示例脚本功能:发送、获取消息编码语言:JAVA**************************************************/import java.io.EOFException;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.MQPoolToken;import com.ibm.mq.MQPutMessageOptions;import com.ibm.mq.MQQueue;import com.ibm.mq.MQQueueManager;import lrapi.lr;public class Actions{privateMQQueuemqQueue;privateMQQueueManagerqMgr = null;    private String hostName = "196.188.190.20"; //远程MQ主机IP    private String channel = "TEST.SVRCONN"; //远程MQ服务器连接通道    private String qManager = "TQM_test";   //远程队列管理器名称    private String sendQName = "test.REQ" ; //用于发送消息的远程队列    private String recvQName = "test.RES";//用于接收消息的本地队列privateintqmPort = 1414;  privateintqmCCSID = 1208;public String getMsg() { //获得消息byte[] data = null;    MQException.log = null;try {     //创建队列管理的连接     //设置队列选项intopenOptions = MQC.MQOO_INPUT_SHARED | MQC.MQOO_FAIL_IF_QUIESCING;//MQC.MQOO_INPUT_AS_Q_DEF;      //指定要打开的队列mqQueue = this.qMgr.accessQueue(this.recvQName, openOptions);     //设置取消息时的消息选项MQGetMessageOptionsgmo = new MQGetMessageOptions();gmo.options = gmo.options + MQC.MQGMO_SYNCPOINT;gmo.options = gmo.options + MQC.MQGMO_WAIT;gmo.options = gmo.options + MQC.MQGMO_FAIL_IF_QUIESCING;gmo.waitInterval = 30000;     //创建一个的消息MQMessageinMsg = new MQMessage();              //从队列中取关联消息ID的消息inMsg.correlationId = lr.eval_string("<P_vuid><P_realdate>").getBytes();mqQueue.get(inMsg, gmo);     //从消息中读取数据并输出data = new byte[inMsg.getMessageLength()];inMsg.readFully(data,0,inMsg.getMessageLength());     //提交队列管理的连接qMgr.commit();     //移除连接池中的连接             //MQEnvironment.removeConnectionPoolToken(token);           } catch (EOFException e) {e.printStackTrace();           } catch (MQException e) {e.printStackTrace();           } catch (IOException e) {e.printStackTrace();           } finally {try {if (mqQueue != null) {mqQueue.close();             }            } catch (MQException ex) {System.err.print(ex);            }            }   //lr.output_message(new String(EBCDICToASCII(data)));return new String(CoderUtil.EBCDICToASCII(data));        }        public void putMsg(String message) {//发送消息    MQException.log = null;try {    //设置队列选项intopenOptions = MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING;    //指定要打开的队列mqQueue = this.qMgr.accessQueue(this.sendQName, openOptions);//设置放消息时的消息选项             MQPutMessageOptions mpmo = new MQPutMessageOptions();     //创建新的消息             MQMessage mqMessage = new MQMessage();     //设置消息id变量,用于消息关联             mqMessage.messageId = lr.eval_string("<P_vuid><P_realdate>").getBytes();     //将数据放入消息缓冲区     mqMessage.writeString(CoderUtil.ASCIIToEBCDIC(message));      //把消息写到指定的队列中             mqQueue.put(mqMessage, mpmo);     //提交队列管理的连接     this.qMgr.commit();            } catch (MQException ex) {             System.out.println("Error Code : " + ex.reasonCode);             ex.printStackTrace();} catch (java.io.IOException ex) {ex.printStackTrace();            } catch (Exception ex) {ex.printStackTrace();            } finally {try {if (mqQueue != null) {mqQueue.close();              }            } catch (MQException ex) {System.err.print(ex);            }            }}public int init() throws Throwable {           //设置MQ环境变量MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,MQC.TRANSPORT_MQSERIES);MQEnvironment.CCSID = this.qmCCSID;  //设置CCSIDMQEnvironment.hostname = this.hostName; //MQEnvironment.channel = this.channel;MQEnvironment.port = this.qmPort;  this.qMgr=new MQQueueManager(this.qManager); //建立MQ连接return 0;}//end of initpublic int action() throws Throwable {    String result = "error";try {  String srcStr = "<P_bnkno>";lr.start_transaction("test");putMsg(lr.eval_string(srcStr));  //lr.output_message(ASCIIToEBCDIC(srcStr));  //lr.output_message(getMsg());result = getMsg();                   //lr.output_message(lr.eval_string(result.substring(241,245)));if(result.substring(241,245).equals("0000")){lr.end_transaction("test",lr.PASS);  } else {lr.end_transaction("test",lr.FAIL);      //lr.output_message("发送字符串:"+lr.eval_string(srcStr));      //lr.output_message("返回字符串:"+lr.eval_string(result));lr.error_message(“错误码是:"+result.substring(241,245));                      //String outStr = new String(result.getBytes("UTF-8"),"ASCII");// putMsg(outStr);                   // String result2 = new String(srcStr.getBytes("ASCII","UTF-8"));                      //lr.output_message("返回字符串:"+outStr);}    } catch (Exception e) {e.printStackTrace();    }return 0;}//end of actionpublicint end() throws Throwable {if (this.qMgr != null) {this.qMgr.close();this.qMgr.disconnect();}return 0;}//end of end}


0 0
原创粉丝点击