1、Rabbitmq的下載與安裝,參考:https://blog.csdn.net/weixin_44015043/article/details/104861596
2、Java代碼如下:
package com.mq.jmeter;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import com.rabbitmq.client.AMQP.Channel;
import com.rabbitmq.client.AMQP.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;
public class mqtest {
public static void main(String[] args) throws IOException, TimeoutException {
//建立連接工廠,設置連接參數
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("127.0.0.1");
connectionFactory.setPort(5672);
connectionFactory.setUsername("guest");
connectionFactory.setPassword("guest");
connectionFactory.setVirtualHost("/");
//建連接
com.rabbitmq.client.Connection connection = connectionFactory.newConnection();
//建立通道
com.rabbitmq.client.Channel channel = connection.createChannel();
//聲明隊列
channel.queueDeclare("Road_test_queue_1", true, false, false, null);
String msgString = "road test 2021";
channel.basicPublish("", "Road_test_queue_1", MessageProperties.PERSISTENT_TEXT_PLAIN, msgString.getBytes());
System.out.println("publish success!!");
channel.close();
connection.close();
}
}
package com.mq.jmeter;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class mq_jmeter extends AbstractJavaSamplerClient{
private ConnectionFactory connectionFactory;
private com.rabbitmq.client.Connection connection;
private com.rabbitmq.client.Channel channel;
private String host;
private int port;
private String user;
private String pwd;
private String queue;
private String Vhost;
private String msg;
@Override
public Arguments getDefaultParameters() {
Arguments arguments =new Arguments();
arguments.addArgument("host", "127.0.0.1");
arguments.addArgument("port","5672");
arguments.addArgument("user","guest");
arguments.addArgument("pwd","guest");
arguments.addArgument("queue","road:test:queue");
arguments.addArgument("Vhost","/");
arguments.addArgument("msg","road test 001 !!!");
return arguments;
}
@Override
public void setupTest(JavaSamplerContext context) {
host = context.getParameter("host");
port = Integer.parseInt(context.getParameter("port"));
user = context.getParameter("user");
pwd = context.getParameter("pwd");
queue = context.getParameter("queue");
Vhost = context.getParameter("Vhost");
//創建連接工廠
connectionFactory = new ConnectionFactory();
connectionFactory.setHost(host);
connectionFactory.setPort(port);
connectionFactory.setUsername(user);
connectionFactory.setPassword(pwd);
connectionFactory.setVirtualHost(Vhost);
//建連接
try {
connection =connectionFactory.newConnection();
} catch (IOException | TimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//建通道
try {
channel =connection.createChannel();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//聲明隊列
try {
//true:是否做持久化
channel.queueDeclare(queue, true, false, false, null);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@SuppressWarnings("deprecation")
@Override
public SampleResult runTest(JavaSamplerContext context) {
SampleResult sampleResult = new SampleResult();
msg = context.getParameter("msg");
sampleResult.setSamplerData(msg);
sampleResult.sampleStart();
try {
//channel.basicPublish("", queue, MessageProperties.PERSISTENT_TEXT_PLAIN, msg.getBytes());
channel.basicPublish("", queue, MessageProperties.PERSISTENT_TEXT_PLAIN, msg.getBytes());
sampleResult.sampleEnd();
sampleResult.setResponseData("publish success");
sampleResult.setDataType("text");
sampleResult.setSuccessful(true);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
sampleResult.setSuccessful(false);
}
return sampleResult;
}
@Override
public void teardownTest(JavaSamplerContext context) {
try {
channel.close();
} catch (IOException | TimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
connection.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//eclipse裏面調試使用
public static void main(String[] args) {
Arguments arguments =new Arguments();
arguments.addArgument("host", "127.0.0.1");
arguments.addArgument("port","5672");
arguments.addArgument("user","guest");
arguments.addArgument("pwd","guest");
arguments.addArgument("queue","Road_test_queue_1");
arguments.addArgument("Vhost","/");
arguments.addArgument("msg","road test 001 !!!");
JavaSamplerContext context = new JavaSamplerContext(arguments);
mq_jmeter test = new mq_jmeter();
test.setupTest(context);
test.runTest(context);
test.teardownTest(context);
}
}
運行結果: