1.pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.leo.mq</groupId>
<artifactId>mq-hello</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.6.0</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.36</version>
<scope>compile</scope>
</dependency>
</dependencies>

</project>

2.生产者

package com.leo.mq;

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

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

/**
* 消息队列生产者
*/
public class Producer {

// 队列名称
private static final String QUEUE_NAME = "hello";

// 发消息
public static void main(String[] args) throws IOException, TimeoutException {
// 创建一个连接工厂
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("127.0.0.1");
connectionFactory.setUsername("guest");
connectionFactory.setPassword("guest");

// 创建连接
Connection connection = connectionFactory.newConnection();
// 获取信道
Channel channel = connection.createChannel();
/**
* 参数说明
* 1.队列名称
* 2.消息是否持久化(磁盘),默认存储在内存中
* 3.该队列是否只供一个消费者消费,是否共享,true-可以多个消费者, false-只能一个消费者消费
* 4.是否自动删除,最后一个消费者断开连接以后,该队列是否自动删除, true-自动删除, false-不自动删除
* 5.其他参数
*/
channel.queueDeclare(QUEUE_NAME, false, false, false,null);
// 发消息
String message = "hello world";
/**
*参数说明:
* 1.发送到哪个交换机
* 2.路由的key值是哪个,本次是队列的名字
* 3.其他参数信息
* 4.发送的消息体
*/
channel.basicPublish("",QUEUE_NAME, null,message.getBytes());
System.out.println("消息发送完毕");
}
}

3.消费者

package com.leo.mq;

import com.rabbitmq.client.*;

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

/**
* 消息队列消费者
*/
public class Consumer {
// 队列名称
private static final String QUEUE_NAME = "hello";
// 接收消息
public static void main(String[] args) throws IOException, TimeoutException {
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setUsername("guest");
connectionFactory.setPassword("guest");

Connection connection = connectionFactory.newConnection();
Channel channel = connection.createChannel();

// 接收消息
DeliverCallback deliverCallback = (consumerTag, message)-> {
System.out.println(new String(message.getBody()));
};
// 取消消息
CancelCallback cancelCallback = consumerTag-> {
System.out.println("消费消息被中断");
};
/**
* 消费者消费消息
* 1.消费哪个队列
* 2.消费成功之后是否自动应答,true-自动应答 false-手动应答
* 3.未成功消费的回调
* 4.消费者取消消费的回调
*/
channel.basicConsume(QUEUE_NAME, true, deliverCallback, cancelCallback);
}
}

4.执行

RabbitMQ入门 Hello-World模式_rabbitmq

RabbitMQ入门 Hello-World模式_java_02 

 RabbitMQ入门 Hello-World模式_rabbitmq_03

RabbitMQ入门 Hello-World模式_rabbitmq_04