RabbitMQ消息中间件-JAVA-Simple简单队列

Simple简单队列

**

模型

:**
简单队列模型
P:消息的生产车 红色的队列(RabbitMQ队列) C:消费者

创建新项目

在这里插入图片描述
在这里插入图片描述

引入依赖

	<dependency>
		<groupId>com.rabbitmq</groupId>
		<artifactId>amqp-client</artifactId>
		<version>4.0.2</version>
	</dependency>

	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-api</artifactId>
		<version>1.7.10</version>
	</dependency>

	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-log4j12</artifactId>
		<version>1.7.5</version>
	</dependency>

	<dependency>
		<groupId>log4j</groupId>
		<artifactId>log4j</artifactId>
		<version>1.2.17</version>
	</dependency>

	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.11</version>
	</dependency>

获取MQ连接

package com.mmr.myrabbitmq.util;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

/**
*定义连接

  • @author 86178

/
public class ConnectionUtils {
/
*
* 获取MQ的连接
* @return
* @throws TimeoutException
* @throws IOException
*/
public static Connection getConnection() throws IOException, TimeoutException {
//定义一个连接工厂
ConnectionFactory factory = new ConnectionFactory();
//设置服务地址
factory.setHost(“127.0.0.1”);
//AMQP 5672
factory.setPort(5672);
//vhost
factory.setVirtualHost("/vhost_mmr");
//用户名
factory.setUsername(“user_mmr”);
//密码
factory.setPassword(“123”);

	return factory.newConnection();
}

}

定义生产者

package com.mmr.myrabbitmq.simple;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

import com.mmr.myrabbitmq.util.ConnectionUtils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;

public class Send {
private static final String QUEUE_NAME = “test_simple_queue”;

public static void main(String[] args) throws Exception {
	
	//获取一个连接
	Connection connection = ConnectionUtils.getConnection();
	
	//从连接中获取一个通道
	Channel channel = connection.createChannel();
	
	//创建队列声明
	channel.queueDeclare(QUEUE_NAME, false, false, false, null);
	
	String msg = "hello simple !";
	
	channel.basicPublish("",QUEUE_NAME,null,msg.getBytes());
	
	System.out.println("--send msg:"+msg);
	
	channel.close();
	connection.close();
	
	
	
}

}

定义消费者

package com.mmr.myrabbitmq.simple;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import com.mmr.myrabbitmq.util.ConnectionUtils;
import com.rabbitmq.client.AMQP.BasicProperties;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.QueueingConsumer.Delivery;

/**

  • 消费者获取消息
  • @author 86178

*/
public class Recv {
private static final String QUEUE_NAME = “test_simple_queue”;

public static void main(String[] args) throws Exception, Exception {
	//获取连接
	Connection connection = ConnectionUtils.getConnection();
	
	//获取频道
	Channel channel = connection.createChannel();
	
	//队列声明
	channel.queueDeclare(QUEUE_NAME,false,false,false,null);
	
	//定义一个消费者
	DefaultConsumer consumer = new DefaultConsumer(channel) {
	//获取到达消息
		@Override
		public void handleDelivery(String consumerTag,Envelope envlope,
				BasicProperties properties,byte[]body) throws IOException{
			String msg = new String(body,"utf-8");
			System.out.println("new api recv:"+msg);
		}
	};
	//监听队列
	channel.basicConsume(QUEUE_NAME,true,consumer);
	
	
}

}

猜你喜欢

转载自blog.csdn.net/weixin_44413260/article/details/106106247