Hello World
![image-20220124000608072](https://img-blog.csdnimg.cn/img_convert/a123955d97cfa391efe2a55ec63962e0.png)
生产者
package com.uin;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
/**
* @author wanglufei
* @description: 生产者
* @date 2022/1/23/10:52 PM
*/
public class Producer {
//队列
private static final String QUEUE_NAME = "hello";
public static void main(String[] args) {
//引入连接工厂
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setUsername("guest");
factory.setPassword("guest");
try {
//获取连接
Connection connection = factory.newConnection();
//在连接中获取信道
Channel channel = connection.createChannel();
/**
** 生成一个队列
* 1.队列名称
* 2.队列里面的消息是否持久化 默认消息存储在内存中
* 3.该队列是否只供一个消费者进行消费 是否进行共享 true 可以多个消费者消费
* 4.是否自动删除 最后一个消费者断开连接以后 该队列是否自动删除 true 自动删除
* 5.其他参数
*/
//Declare 声明一个队列
//queue队列的名字 durable是否持久化 exclusive是否排他 autoDelete是否自动删除 argument给队列传递的参数
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Hello word";
/**
* 发送一个消息
* 1.发送到那个交换机
* 2.路由的 key 是哪个
* 3.其他的参数信息
* 4.发送消息的消息体
*/
//exchange指定哪个交换机 props
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
System.out.println("消息发送完毕!");
} catch (IOException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
}
}
}
![image-20220124001105440](https://img-blog.csdnimg.cn/img_convert/e8362dd54b414a074cd064ed2e79b6d7.png)
消费者
package com.uin;
import com.rabbitmq.client.*;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
/**
* @author wanglufei
* @description: TODO
* @date 2022/1/23/11:32 PM
*/
public class Consumer {
private static final String QUEUE_NAME = "hello";
public static void main(String[] args) throws IOException, TimeoutException {
//引入连接工厂
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("localhost");
connectionFactory.setUsername("guest");
connectionFactory.setPassword("guest");
//获取连接
Connection connection = connectionFactory.newConnection();
//获取连接中的信道
Channel channel = connection.createChannel();
//声明 消息回调的函数式接口 接受消息
//lambdas 函数式 代替了 匿名内部类
//https://cloud.tencent.com/developer/article/1787258
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);
}
}
![image-20220124001242180](https://img-blog.csdnimg.cn/img_convert/d1006ed8f77ee5c9a9319bed8dbc9918.png)
![image-20220124001320536](https://img-blog.csdnimg.cn/img_convert/1695e39d7c6ac9fca51e045b7270939b.png)