RabbitMQ環境部署

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);  
  } 
	
}

運行結果:

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章