在IDEA中新建一个Maven工程,并添加 RabbitMQ Java client依赖
<dependencies>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.5.1</version>
</dependency>
</dependencies>
新建Send.java文件,先不要关心方法及每个参数的具体作用
public class Send {
private final static String QUEUE_NAME = "hello";
public static void main(String[] args) throws Exception {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
try (Connection connection = factory.newConnection();
Channel channel = connection.createChannel()) {
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Hello World!";
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
System.out.println(" [x] Sent '" + message + "'");
}
}
}
新建Recv.java文件
public class Recv {
private final static String QUEUE_NAME = "hello";
public static void main(String[] args) throws Exception {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
System.out.println(" [*] Waiting for messages.");
DeliverCallback deliverCallback = (consumerTag, delivery) -> {
String message = new String(delivery.getBody(), "UTF-8");
System.out.println(" [x] Received '" + message + "'");
};
channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> { });
}
}
启动RabbitMQ Server
brew services start rabbitmq
运行 Send.main(),控制台输出如下:
[x] Sent 'Hello World!'
运行Recv.main(),控制台输出如下:
[*] Waiting for messages.
[x] Received 'Hello World!'
简单概念
RabbitMQ是一个消息代理,负责接收和转发消息。

P代表消息的发送者(producer),比如上面的Send类。
C代表消息的接收者(consumer),比如上面的Recv类。
中间红色的图片代表消息队列(message queue)。消息队列可以通过名称标识,比如上面的"hello"。