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