目录
1、需求
2、步骤
3、搭建工程实例
1.1、创建工程
1.2、添加依赖
1.3、编写生产者
1.4、编写消费者
1、需求
使用简单模式为例搭建环境完成消息传递
2、步骤
① 创建工程(生产者、消费者)
② 分别添加依赖
③ 编写生产者发送消息
④ 编写消费者接收消息
3、搭建工程实例
1.1、创建工程
① 创建生产者
② 创建消费者
1.2、添加依赖
com.rabbitmq
amqp-client
5.6.0
org.apache.maven.plugins
maven-compiler-plugin
3.8.0
1.8
1.8
1.3、编写生产者
public class Producer {
public static final String QUEUE_NAME = "simple_queue";//队列名称
public static void main(String[] args) throws Exception {
// 1、创建工厂
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("192.168.137.118");
connectionFactory.setPort(5672);//AMQP协议
connectionFactory.setUsername("admin");
connectionFactory.setPassword("admin");
// 2、创建连接
Connection connection = connectionFactory.newConnection();
// 3、创建信道
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, true, false, false, null);
String msg = "Hello,Rabbit!";
channel.basicPublish("", QUEUE_NAME, null, msg.getBytes());
// 6.关闭对象(信道)
channel.close();
connection.close();
}
}
public class Producer {
public static final String QUEUE_NAME = "simple_queue";//队列名称
public static void main(String[] args) throws Exception {
// 1、创建工厂
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("192.168.137.118");
connectionFactory.setPort(5672);//AMQP协议
connectionFactory.setUsername("admin");
connectionFactory.setPassword("admin");
// 2、创建连接
Connection connection = connectionFactory.newConnection();
// 3、创建信道
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, true, false, false, null);
String msg = "Hello,Rabbit!";
channel.basicPublish("", QUEUE_NAME, null, msg.getBytes());
// 6.关闭对象(信道)
channel.close();
connection.close();
}
}
在执行上述的消息发送之后;可以登录rabbitMQ的管理控制台,可以发现队列和其消息:
1.4、编写消费者
public class Consumer1 {
public static final String QUEUE_NAME = "simple_queue";// 声明一个常量作为队列名(要求与生产者一样)
public static void main(String[] args) throws Exception {
// 1、创建工厂
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("192.168.137.118");
connectionFactory.setPort(5672);//AMQP协议
connectionFactory.setUsername("admin");
connectionFactory.setPassword("admin");
//2.创建连接
Connection connection = connectionFactory.newConnection();
//3.创建信道
Channel channel = connection.createChannel();
//4、声明队列
channel.queueDeclare(QUEUE_NAME, true, false, false, null);
//5、创建消费者消费信息
Consumer consumer = new DefaultConsumer(channel) {
@Override
public void handleDelivery(String consumerTag, Envelope envelope,
AMQP.BasicProperties properties, byte[] body) throws IOException {
System.out.println("consumerTag = " + consumerTag);
System.out.println("envelope.getDeliveryTag() = " + envelope.getDeliveryTag()); //相当于id
System.out.println("envelope.getExchange() = " + envelope.getExchange());
System.out.println("envelope.getRoutingKey() = " + envelope.getRoutingKey());
System.out.println("properties = " + properties);
System.out.println("body = " + new String(body));
}
};
channel.basicConsume(QUEUE_NAME, false, consumer);
//消费者无需关闭对象,一旦生产者来了信息随时处理
}
}
运行程序可发现,rabbitmq管理控制台的消息从队列上消失,消费者取出消息,并且控制台打印出消息



