Created
March 1, 2015 06:35
-
-
Save ZhouMeichen/e7931565cdb1b44b49a6 to your computer and use it in GitHub Desktop.
调用WebSphere MQ接口实现消息的读取,利用JMeter的Java请求进行性能测试
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package test; | |
import java.io.BufferedReader; | |
import java.io.FileReader; | |
import java.io.IOException; | |
import org.apache.jmeter.config.Arguments; | |
import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient; | |
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; | |
import org.apache.jmeter.samplers.SampleResult; | |
public class JMeterJavaSampler implements JavaSamplerClient{ | |
private SampleResult sr; | |
// private String[] getMsg; | |
// | |
// private String[] sendMsg; | |
// | |
// private String msgPath; | |
public void setupTest(JavaSamplerContext arg0){ | |
sr = new SampleResult(); | |
} | |
public Arguments getDefaultParameters(){ | |
Arguments args = new Arguments(); | |
// args.addArgument("GetMsg_HostName", ""); | |
// args.addArgument("GetMsg_Port", ""); | |
// args.addArgument("GetMsg_qManager", ""); | |
// args.addArgument("GetMsg_QName", ""); | |
// args.addArgument("GetMsg_Channel", ""); | |
// args.addArgument("GetMsg_CCSID", ""); | |
// | |
// args.addArgument("SendMsg_HostName", ""); | |
// args.addArgument("SendMsg_Port", ""); | |
// args.addArgument("SendMsg_qManager", ""); | |
// args.addArgument("SendMsg_QName", ""); | |
// args.addArgument("SendMsg_Channel", ""); | |
// args.addArgument("SendMsg_CCSID", ""); | |
// | |
// args.addArgument("msgPath",""); | |
return args; | |
} | |
public SampleResult runTest(JavaSamplerContext arg0) { | |
// getMsg[0] = arg0.getParameter("GetMsg_HostName"); | |
// getMsg[1] = arg0.getParameter("GetMsg_Port"); | |
// getMsg[2] = arg0.getParameter("GetMsg_qManager"); | |
// getMsg[3] = arg0.getParameter("GetMsg_QName"); | |
// getMsg[4] = arg0.getParameter("GetMsg_Channel"); | |
// getMsg[5] = arg0.getParameter("GetMsg_CCSID"); | |
// | |
// sendMsg[0] = arg0.getParameter("SendMsg_HostName"); | |
// sendMsg[1] = arg0.getParameter("SendMsg_Port"); | |
// sendMsg[2] = arg0.getParameter("SendMsg_qManager"); | |
// sendMsg[3] = arg0.getParameter("SendMsg_QName"); | |
// sendMsg[4] = arg0.getParameter("SendMsg_Channel"); | |
// sendMsg[5] = arg0.getParameter("SendMsg_CCSID"); | |
// | |
// msgPath = arg0.getParameter("msgPath"); | |
// getMsg[0] = "172.29.140.157"; | |
// getMsg[1] = "1415"; | |
// getMsg[2] = "EBanking"; | |
// getMsg[3] = "ESB_TEST_QUEUE"; | |
// getMsg[4] = "SYSTEM.CHANNEL"; | |
// getMsg[5] = "1381"; | |
// | |
// sendMsg[0] = "172.29.140.157"; | |
// sendMsg[1] = "1415"; | |
// sendMsg[2] = "EBanking"; | |
// sendMsg[3] = "ESB_TEST_QUEUE"; | |
// sendMsg[4] = "SYSTEM.CHANNEL"; | |
// sendMsg[5] = "1381"; | |
// | |
// msgPath = "D://BOC.xml"; | |
try { | |
MQTest mqst = new MQTest(); | |
mqst.init(); | |
StringBuffer sb= new StringBuffer(""); | |
FileReader reader = null; | |
reader = new FileReader("D:/BOC.xml"); | |
BufferedReader br = new BufferedReader(reader); | |
String str = null; | |
try { | |
while((str = br.readLine()) != null) { | |
sb.append(str); | |
} | |
System.out.println(sb); | |
br.close(); | |
reader.close(); | |
} catch (IOException e) { | |
// TODO Auto-generated catch block | |
e.printStackTrace(); | |
} | |
String s = sb.toString(); | |
mqst.SendMsg(s.getBytes("GBK")); | |
sr.sampleStart(); // JMeter 开始统计响应时间标记 | |
// mqst.GetMsg(); | |
while(true) | |
{ | |
if (mqst.GetMsg()){ | |
break; | |
} | |
} | |
sr.setSuccessful(true); | |
mqst.finalizer(); | |
} | |
catch (Exception e) { | |
e.printStackTrace(); | |
sr.setSuccessful(false); | |
} | |
finally { | |
sr.sampleEnd(); // JMeter 结束统计响应时间标记 | |
} | |
return sr; | |
} | |
public void teardownTest(JavaSamplerContext arg0){ | |
} | |
// public static void main(String[] args) { | |
// Arguments params = new Arguments(); | |
// params.addArgument("GetMsg_HostName", "172.29.140.157"); | |
// params.addArgument("GetMsg_Port", "1415"); | |
// params.addArgument("GetMsg_qManager", "EBanking"); | |
// params.addArgument("GetMsg_QName", "EARESPONSEH2H"); | |
// params.addArgument("GetMsg_Channel", "SYSTEM.CHANNEL"); | |
// params.addArgument("GetMsg_CCSID", "1381"); | |
// | |
// params.addArgument("SendMsg_HostName", "ESB_TEST_QUEUE"); | |
// params.addArgument("SendMsg_Port", "1415"); | |
// params.addArgument("SendMsg_qManager", "EBanking"); | |
// params.addArgument("SendMsg_QName", ""); | |
// params.addArgument("SendMsg_Channel", "SYSTEM.CHANNEL"); | |
// params.addArgument("SendMsg_CCSID", "1381"); | |
// | |
// params.addArgument("msgPath","D://BOC.xml"); | |
// JavaSamplerContext arg0 = new JavaSamplerContext(params); | |
// JMeterJavaSampler javasampler = new JMeterJavaSampler(); | |
// javasampler.setupTest(arg0); | |
// javasampler.runTest(arg0); | |
// javasampler.teardownTest(arg0); | |
// | |
// } | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package test; | |
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; | |
/* | |
* 可以在MQ的资源管理器的某一个队列上放入测试消息、浏览消息等 | |
* 可以放入多条消息,按先进先出的方式取得 | |
*/ | |
public class MQTest { | |
private String qManager;// QueueManager名 | |
private MQQueueManager qMgr; | |
private MQQueue qQueue; | |
String HOST_NAME; | |
int PORT = 0; | |
String Q_NAME; | |
String CHANNEL; //通道 | |
int CCSID; //编码 | |
String Msg; //消息 | |
public void init() { | |
} | |
void finalizer() { | |
try { | |
qQueue.close(); | |
qMgr.disconnect(); | |
} catch (MQException e) { | |
System.out | |
.println("A WebSphere MQ error occurred : Completion code " | |
+ e.completionCode + " Reason Code is " | |
+ e.reasonCode); | |
} | |
} | |
/* | |
* 取过一次,下次就没有了 | |
*/ | |
public boolean GetMsg() { | |
try { | |
HOST_NAME = "172.29.140.157"; | |
// int p = Integer.parseInt(args[1]); | |
PORT = 1416; | |
qManager = "YUM_ESB"; | |
Q_NAME = "H2H_EA_SpecialSalary"; | |
CHANNEL = "SYSTEM.CHANNEL"; | |
// int c = Integer.parseInt(args[5]); | |
CCSID = 1381; // 表示是简体中文, | |
// CCSID的值在AIX上一般设为1383,如果要支持GBK则设为1386,在WIN上设为1381。 | |
MQEnvironment.hostname = HOST_NAME; | |
MQEnvironment.port = PORT; | |
MQEnvironment.channel = CHANNEL; | |
MQEnvironment.CCSID = CCSID; | |
qMgr = new MQQueueManager(qManager); | |
int qOptioin = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_INQUIRE | |
| MQC.MQOO_OUTPUT; | |
qQueue = qMgr.accessQueue(Q_NAME, qOptioin); | |
} catch (MQException e) { | |
System.out | |
.println("A WebSphere MQ error occurred : Completion code " | |
+ e.completionCode + " Reason Code is " | |
+ e.reasonCode); | |
} | |
try { | |
MQMessage retrievedMessage = new MQMessage(); | |
MQGetMessageOptions gmo = new MQGetMessageOptions(); | |
gmo.options += MQC.MQPMO_SYNCPOINT; | |
qQueue.get(retrievedMessage, gmo); | |
int length = retrievedMessage.getDataLength(); | |
byte[] msg = new byte[length]; | |
retrievedMessage.readFully(msg); | |
String sMsg = new String(msg); | |
System.out.println("The message is read!"); | |
System.out.println(sMsg); | |
return true; | |
} catch (RuntimeException e) { | |
e.printStackTrace(); | |
return false; | |
} catch (MQException e) { | |
if (e.reasonCode != 2033) // 没有消息 | |
{ | |
e.printStackTrace(); | |
System.out | |
.println("A WebSphere MQ error occurred : Completion code " | |
+ e.completionCode | |
+ " Reason Code is " | |
+ e.reasonCode); | |
} | |
return false; | |
} catch (java.io.IOException e) { | |
System.out | |
.println("An error occurred whilst to the message buffer " | |
+ e); | |
return false; | |
} | |
} | |
public void SendMsg(byte[] qByte) { | |
try { | |
HOST_NAME = "172.29.140.157"; | |
// int p = Integer.parseInt(args[1]); | |
PORT = 1416; //1416; | |
qManager = "YUM_ESB"; | |
Q_NAME = "EA_H2H_SpecialSalary"; | |
CHANNEL = "SYSTEM.CHANNEL"; | |
// int c = Integer.parseInt(args[5]); | |
CCSID = 1381; // 表示是简体中文, | |
// CCSID的值在AIX上一般设为1383,如果要支持GBK则设为1386,在WIN上设为1381。 | |
MQEnvironment.hostname = HOST_NAME; | |
MQEnvironment.port = PORT; | |
MQEnvironment.channel = CHANNEL; | |
MQEnvironment.CCSID = CCSID; | |
qMgr = new MQQueueManager(qManager); | |
int qOptioin = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_INQUIRE | |
| MQC.MQOO_OUTPUT; | |
qQueue = qMgr.accessQueue(Q_NAME, qOptioin); | |
} catch (MQException e) { | |
System.out | |
.println("A WebSphere MQ error occurred : Completion code " | |
+ e.completionCode + " Reason Code is " | |
+ e.reasonCode); | |
} | |
try { | |
MQMessage qMsg = new MQMessage(); | |
qMsg.write(qByte); | |
MQPutMessageOptions pmo = new MQPutMessageOptions(); | |
qQueue.put(qMsg, pmo); | |
System.out.println("The message is sent!"); | |
System.out.println("\tThe message is " + new String(qByte, "GBK")); | |
} catch (MQException e) { | |
System.out | |
.println("A WebSphere MQ error occurred : Completion code " | |
+ e.completionCode + " Reason Code is " | |
+ e.reasonCode); | |
} catch (java.io.IOException e) { | |
System.out | |
.println("An error occurred whilst to the message buffer " | |
+ e); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment